赞 | 0 |
VIP | 0 |
好人卡 | 1 |
积分 | 1 |
经验 | 167035 |
最后登录 | 2013-9-15 |
在线时间 | 57 小时 |
Lv1.梦旅人 风之塞尔达
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 57 小时
- 注册时间
- 2005-10-22
- 帖子
- 2492
|
本帖最后由 link006007 于 2011-4-27 12:19 编辑
RGSS只是一个封装其他语言(C\C++)函数的ruby对象集合,而ruby本身以一个解释器的方式本身运行于程序之内,对于RPG Maker而言,应该是在初始化完一个ruby解释器之后,进入RGSS的用户脚本,之后碰到loop循环(既所谓的main函数),然后导致程序的不断运行。所以,即使是ruby里面的Thread.new出来的线程应该也是属于RPGMake的进程,这样的线程就会和其他的线程分摊这个进程的CPU时间。所以,在非多核CPU或多CPU环境下,对于计算密集的进程而言,是没有优化效果的。
RM主线程被用满的时候应该是不存在的。同进程的线程会不会使得另外一个线程没有机会被调度,这个取决于操作系统的任务调度机制,对于大多数操作系统而言应该是不会的。除非那个进程本身难以被调度。多线程提供的就是一种并行的假象(多CPU是真的并行。。。),如果会有一个线程无法执行,那就失去线程的意义了。
我说的同步是,诸如画面和逻辑AI被分摊到不同线程中,只要是有关联的操作,同步就是必须的,因为永远无法知道几个线程在没有同步的条件下的确切状态,不然用信号量同步这类东西可以说再见了。 |
|