iPhone 多线程和 AI

标签 iphone multithreading

我有一个 ai 循环,我想为我的 iPhone 应用程序编写它。据我了解,这个循环将花费很长时间来进行计算并阻止主应用程序。

我想将其放在不同的线程中并运行所有事件。

例如,我会有一个在玩家回合开始时调用的事件。 AI 线程会监听它并使用react。

我的ai线程与主线程通信的最佳方式是什么?我经常使用 NSNotificationcenter,但我读到一些奇怪的东西,比如它不会在正确的线程上触发事件?

通过事件(例如操作)与线程进行通信的最佳方式是什么?

最佳答案

我的建议是使用 NSOperationQueue 来执行 AI 处理操作。当用户执行操作时,创建一个 NSOperation 来处理 AI 处理以响应该事件,并将其添加到 NSOperationQueue 中。如果这些操作之间存在依赖性,或者如果您希望将处理拆分为更小的子操作,则可以将这些操作设置为仅在满足特定条件时进行处理。

放置在 NSOperationQueue 中的操作将在后台线程上运行,因此它们不会阻塞主线程。对于 UI 更新或需要在主线程上执行的其他操作,我建议使用 -performSelectorOnMainThread:withObject:waitUntilDone: 来调用操作中的方法,该方法通过 NSNotificationCenter 的 -postNotificationName:object: 发布通知。让您的 View Controller 或其他 Controller 响应这些通知,并根据您的 AI 例程的结果执行所需的操作。

关于iPhone 多线程和 AI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739176/

相关文章:

iphone - UIImagePickerController 无法选择图片

iphone - 在 UIimageview 层的边框和内容之间添加空间

ios - 按特定字符拆分字符串,iOS

c# - 如何向应用程序添加暂停/恢复功能?

ios - 写入 coredata,即使在后台线程上完成,也会大大阻塞 UI

java - NIO 选择器 : How to properly register new channel while selecting

iPhone App Binary 拒绝应用内购买

iphone - ios - 如何找到 UITextView 中文本的可见范围?

android - 从服务中的线程发送 toast

ios - NSOperationQueue的多个分配使我的应用程序崩溃