与OSSpinLock *用法的帮助来替换,而(真){睡眠(1);}
-
06-09-2019 - |
题
我维持在OS X碳C ++应用程序有一个“自旋锁”在看起来像这样的代码中的对象中的一个,
while ( mState != RELEASED )
{
sleep( 1 );
}
有是一个后渲染被馈送到AudioUnitAddRenderNotify(),将设置这些各种物体的mState维护回调。
我想使用内置OSSpinLock系列函数替换此(如果没有别的,因为他们是线程安全的,上面的代码似乎没有定)。
这将是一个合理的等价物?我应该也是在维护线程其操纵这些对象的mState添加一些锁保护?
OSSpinLock spin_lock = OS_SPINLOCK_INIT;
if (!OSSpinLockTry(&spin_lock))
OSSpinLockLock(&spin_lock);
while (mState != RELEASED)
OSSpinLockTry(&spin_lock);
OSSpinLockUnlock(&spin_lock);
不隶属于 StackOverflow