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

标签 iphone ios

<分区>

Possible Duplicate:
GCD : How to write and read to variable from two threads

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

最佳答案

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

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

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

为此你只需要一个互斥体,所以不用担心实现信号量的额外代码。

关于iphone - 如何在 iOS 应用程序中实现互斥量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033060/

相关文章:

ios - Apple MDM - 无法解密配置文件(未安装此配置文件的解密 key )

ios - 我可以防止 RestKit+CoreData 覆盖本地实体更改吗?

ios - 为什么在设置imageView之前将 "translatesAutoresizingMaskIntoConstraints"设置为false,会显示无图像?

iphone - xcode 5 什么是警告现在是错误 - 控件可能到达非无效函数的末尾

iphone - UIPickerView关于选择第一个值的问题

iphone - 钥匙串(keychain)组访问以在我现有的应用程序之间共享数据

iphone - 如何在tableview底部添加加载更多按钮?

iphone - float 不返回正确的十进制值

ios - 如何在 iPad 上隐藏状态栏?

ios - 如何在 UITableView 的 switch 语句中创建变量?