在cocoa中,什么是保证块或任务只运行一次的好方法?

时间:2011-10-19 04:17:09

标签: objective-c cocoa macruby

例如,我有同时运行的搜索器操作。找到匹配项的第一个应该启动一个更新程序任务,该任务将向gui发送匹配项。我想保证更新程序只启动一次 - 但我想以一种为搜索器操作增加最小开销的方式这样做。

编辑:如果可能,我想在macruby中执行此操作,macruby目前没有dispatch_once的映射。

2 个答案:

答案 0 :(得分:1)

您想使用dispatch_once

答案 1 :(得分:0)

我不知道macruby,但也许你可以想到一个全球旗帜。使用互斥锁来保证一次只能有一个线程访问该变量。在调用updater之前,每个线程都应该检查变量。如果为false,则将变量设置为true并调用updater,否则只需继续。