如何在iOS应用程序中实现互斥

时间:2012-08-20 06:23:13

标签: iphone ios

  

可能重复:
  GCD : How to write and read to variable from two threads

我正在开发一个我正在使用sqlite数据库的iOS应用程序。我必须执行多线程但是在sqlite数据库上我一次只能做一件事。所以我需要实现信号量的概念。所以请帮助我

2 个答案:

答案 0 :(得分:3)

您可以将@synchronized指令用作互斥锁。如果您拥有在单个数据管理器中操作sqlite数据库的所有方法,并且在整个项目中共享,则可以将该对象用作锁定标记,例如:

- (void)myMethod:(id)globalDataManager {
    @synchronized(globalDataManager) {
        // Everything between the braces is protected by the @synchronized directive.
    }
}

在数据管理器中,您可以使用@synchronized(self)获得相同的保护。

您只需要一个互斥锁,因此不必担心实现信号量的额外代码。

答案 1 :(得分:0)

  

我需要实现信号量的概念

信号量实现可在#include <sys/semaphore.h>中找到。