ios - Objective-C/Swift 中除了 os_unfair_lock 之外还有其他原生 C 级锁吗?

标签 ios c macos synchronization

我很好奇,开始寻找 iOS/macOS 平台上所有可用的 C 级同步工具。然而,根据官方文档( https://developer.apple.com/documentation/os/synchronization?language=objc ),os_unfair_lock 似乎是唯一可用的同步工具。

我错过了什么吗?所有 C 级信号量/监视器工具在哪里?

最佳答案

所有旧的 C 锁都在那里,但现在他们试图引导每个人走向 os_unfair_lock。请参阅Concurrent Programming with GCD他们讨论了 C 锁机制(以及如果你愿意的话如何在 Swift 中使用它们),这个讨论涉及到他们现在关于锁的思考过程。

但是你可以使用pthread_mutex_t像以前一样。或者,如果您正在处理原子,则可以使用 OSAtomicXXX 。旧的自旋锁已被弃用,建议使用此 os_unfair_lock 来代替。所有这些选项都隐藏在 man pages 中.

不用说,从 Objective-C 中,你仍然有 NSLock , NSRecursiveLock还有 @synchronized 指令。

旧的Threading Programming Guide: Using Locks列举了一些锁定替代方案。

关于ios - Objective-C/Swift 中除了 os_unfair_lock 之外还有其他原生 C 级锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60045664/

相关文章:

c - 重新分配后的动态内存存储问题 - C

c - 如何用C编写函数 'extensible'?

macos - 如何在 M1 Macbook 上的 Rosetta 2 下运行 Homebrew 安装程序

ios - 向上而不是向下关闭 ViewControll

ios - 以编程方式从应用程序获取 iOS 设备日志

c - 为什么链接的二进制文件的 _size 符号不能正常工作?

macos - 使用 CGDisplayStream 捕获屏幕

java - mac os x 上的 eclipse JNI_CreateJavaVM 错误

iOS Charts(danielgindi) - 如何在每次迭代中更新图表数据?

ios - Urban Airship 收不到富人推