Objective-C/Swift中是否有除os_unfair_lock以外的原生C级锁?

Is there any native C-level lock other than os_unfair_lock in Objective-C/Swift?

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

我错过了什么吗? C 级 semaphore/monitor 工具在哪里?

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

但是你可以使用pthread_mutex_t like before. Or if you’re dealing with an atomic, you can use OSAtomicXXX. The old spinlock has been deprecated, with this os_unfair_lock recommended in lieu of that. All of these options are buried in the man pages.

不用说,从 Objective-C 开始,您还有 NSLock, NSRecursiveLock@synchronized 指令。

旧的 Threading Programming Guide: Using Locks 列举了一些锁定选项。