可能重复:
GCD : How to write and read to variable from two threads
我正在开发一个我正在使用sqlite数据库的iOS应用程序。我必须执行多线程但是在sqlite数据库上我一次只能做一件事。所以我需要实现信号量的概念。所以请帮助我
答案 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>
中找到。