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

时间:2012-03-11 23:41:12

标签: objective-c macos cocoa macos-carbon

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

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

当前的问题是:

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

MPCreateEvent MPDeleteEvent MPWaitForEvent MPSetEvent

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

1 个答案:

答案 0 :(得分:5)

首先,你应该阅读Concurrency Programming Guide。有几种方法可以在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.");
});

这在并发文档中都有详细解释。不幸的是,我无法找到有关弃用Multiprocessing API的任何文档。但是,该API 非常旧,可以追溯到Mac OS X之前,我怀疑Apple假设使用它的大部分代码都已经过时了。我不羡慕你的任务!

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