线程间的“沟通”问题

时间:2011-04-21 08:27:02

标签: iphone multithreading cocoa cocoa-touch ios

在我的应用程序中,我有两个线程,首先是我有代码的gui线程 当用户按下每个按钮时调用。

在第二个帖子中我有视频录制机制,我可以在那里开始,捕捉,录制(录制)视频到文件。

当我试图从第一个线程“开始录制”时出现问题 - 它崩溃了。 所以我必须在gui线程中设置某种布尔'通信标志',然后检查它们 在视频线程中,然后从视频线程中“录制视频”。

我认为这样的旗帜很糟糕 - 这是一种简单而恰当的方法吗?

1 个答案:

答案 0 :(得分:2)

这是一个非常广泛的主题,你在那里触摸。但是Cocoa确实包含一些有用的线程间通信方法。你可能想看看

[NSObject performSelector:onThread:withObject:waitUntilDone:]

只有在第二个线程中运行NSRunLoop时才会有效。否则你的视频录制课程中会有一个bool @property。这将是你建议的旗帜。从主线程更改其值并从记录循环中的辅助线程检查其值以执行操作。

不要忘记你的@property声明需要是原子的。

您可能还想使用NSOperationQueue或阻止,很难从您的问题中看出什么效果最好。取决于你的编码偏好,我想。