什么是OSX上已弃用的多处理服务的Cocoa或Carbon替代品?

Ger*_*ald 3 macos cocoa macos-carbon objective-c

所以我正在努力从非常古老的C++/Carbon代码更新大型项目,并且我一直在使用已弃用的函数.

所以我想这个问题有两个方面.

当前的问题是:

应该使用什么代替10.7中不推荐使用的以下函数?是否有Cocoa等价物,或更新的碳当量?

MPCreateEvent MPDeleteEvent MPWaitForEvent MPSetEvent

问题的第二部分是,Apple开发者网站或其他地方是否有一些地方,我可以找到更多关于在旧代码被正式弃用的情况下应该使用什么的信息?

Rob*_*ger 5

首先,您应该阅读并发编程指南.在Cocoa应用程序中有几种实现并发的方法,该指南详细解释了它们.

可能与Carbon函数最接近的类似物是各种Grand Central Dispath(GCD)函数,它们允许您通过传递Objective-C块在后台进程中运行代码:

dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(aQueue, ^{
    NSLog(@"Do some work in the background here.");
});
Run Code Online (Sandbox Code Playgroud)

这在并发文档中都有详细解释.不幸的是,我无法找到有关弃用Multiprocessing API的任何文档.然而,这个API已经老了,可以追溯到Mac OS X之前,我怀疑Apple假设使用它的大多数代码已经很久了.我不羡慕你的任务!

请注意,GCD和块在10.6中引入.如果由于某种原因需要支持10.5,则可以使用该NSOperation版本操作系统中引入的方法.这些不像GCD那样容易使用,但它们可以实现类似的结果.NSOperation对于某些用例,它仍然可用且非常好.