multithreading - Cocos2d 应用程序的线程同步

标签 multithreading cocoa cocos2d-iphone box2d

在我的 cocos2d 游戏中,我有一些必须销毁的球,并且有 2 个线程彼此并发,第一个线程将球添加到 NSMutablearray,第二个线程迭代此数组并为每个线程调用释放方法球,我已将数组的每个操作放入 @synchronized(array) 的同步块(synchronized block)中,但它不受影响,并且每次在同步块(synchronized block)应用程序中都会抛出异常 __NSArrayM 在枚举时发生突变: 也许还有其他方法来同步线程?

最佳答案

由于您是从一个线程添加对象并使用另一个线程迭代同一数组,因此对这部分代码进行多线程处理似乎毫无意义。

原因是你can not modify an array while iterating对其进行处理,无论您是在同一个线程还是多个线程中执行此操作。

通过使用两个数组,每个线程一个,并且每个线程执行相同的任务,您很可能会获得更好的结果:两个数组都在添加对象,然后都迭代其一半的对象。如何分割对象取决于您,它可以基于屏幕坐标(屏幕分割)或其他一些条件(即每个线程处理的对象的平衡数量)。

关于multithreading - Cocos2d 应用程序的线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314781/

相关文章:

ios - 升级到Cocos2d 2.1后AppDelegate错误

c++ - std::condition_variable 可预测的虚假唤醒?

python C扩展: multithreading and random numbers

cocoa - 如何将 EKEvent 设置为在特定日期之前重复发生可变天数?

objective-c - 如何改变NSScrollView的边框颜色?

objective-c - 如何获得左对齐的cocos2d菜单

iphone - iPhone 上的线程绘图

java - java中如何停止一个线程

objective-c - 访问 UITableViewCell 的 TouchBegan/Moved/Ended

android - 如何检测 Xperia Play 中打开的 slider