def update_events @events.each_value {|event| event.update } @common_events.each {|event| event.update } @usr_events.each {|event| event.update} end
i=0; while i<usr_events.size usr_events[i].update i+=1; end


,其实实际情况可以灵活看待就不一定一定是逻辑错误了。就比如说动态添加和删除事件的这个例子,如果我们把Game_Map看作是操作系统代码的话,每一个event就可以看作是一个独立的线程,event中的update函数就是线程函数,而Game_Map迭代events其实就相当于不停地在给每个线程分配时间片,逻辑上来说每个event能正常执行的话我们只要保证event当中的update是线程安全的函数或者update是解决了竞争关系的函数就可以了,一个event偶尔点背被系统不公平得剥夺了一两个Cpu时间片在逻辑上是无关紧要的。

| 欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |