从 macOS 10.12 开始,OSSpinLock
已弃用。XCode 错误消息敦促我os_unfair_lock_unlock()
改用。
作为我所依赖的一些开源东西的遗产,我从 2010 年开始使用 RegexKitLite。
如何转换自旋锁类型?我可以管理简单的解锁和锁定,但这些比较让我头疼:
if(rkl_cacheSpinLock != (OSSpinLock)0) { ... }
rkl_cacheSpinLock
是类型os_unfair_lock
并且已经被初始化。OSSpinLock 似乎是 type int
,所以这个 if 语句显然是行不通的。
谁能指出我解决这个问题的正确方法?我对C不太熟悉,也不太了解指针的算术。
编辑
在学习了一点 C 之后,我开始理解类型转换。我想出了一个似乎可行的解决方案。我对这个级别的操作系统功能的理解是不存在的。os_unfair_lock 对于傻瓜来说没有很好的文档记录,但看起来我没有破坏任何东西。
if (rkl_cacheSpinLock._os_unfair_lock_opaque != 0) { ... }