3

可能重复:
GCD:如何从两个线程写入和读取变量

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

4

2 回答 2

4

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

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

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

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

于 2012-08-20T06:37:29.980 回答
0

我需要实现信号量的概念

信号量实现位于#include <sys/semaphore.h>.

于 2012-08-20T06:39:47.927 回答