可能是重复问题:
GCD:如何从两个线程中写入和读取变量
我正在开发一个 iOS 应用程序,其中使用了 SQLite 数据库。我需要执行多线程操作,但在 SQLite 数据库上一次只能执行一个任务。因此,我需要实现信号量的概念。请帮助我。
可能是重复问题:
GCD:如何从两个线程中写入和读取变量
我正在开发一个 iOS 应用程序,其中使用了 SQLite 数据库。我需要执行多线程操作,但在 SQLite 数据库上一次只能执行一个任务。因此,我需要实现信号量的概念。请帮助我。
@synchronized
来作为互斥锁,如果你将所有用于操作SQLite数据库的方法都放置在一个由单例创建并在整个项目中共享的数据管理器中,那么你可以使用该对象作为锁标记,例如:- (void)myMethod:(id)globalDataManager {
@synchronized(globalDataManager) {
// Everything between the braces is protected by the @synchronized directive.
}
}
在数据管理器中,您可以使用@synchronized(self)
来提供相同的保护。
所以您只需要一个互斥锁,不必担心实现信号量的额外代码。
#include <sys/semaphore.h>
中找到。