我正在研究多线程代码。通过“NSLock”对象将数据访问锁定在几个部分中。我想确保在这些部分中调用的某些方法检查是否获得了适当的锁定。
就像是:
assert([myLock isSet] == YES);
我在NSLock中找不到类似“isSet”的东西。有什么想法如何确保设置锁?
谢谢!
最佳答案
您如何获得锁?如果您正在调用lock
,那么您甚至在之后运行的事实也应确保您已获得它。如果您调用lockBeforeDate
,则返回值会告诉您。
如果您想从其他地方进行测试,则可以
if ( [myLock tryLock] )
{
// oops, lock was not previously acquired!
...
[myLock unlock];
}
else
{
// yep, lock was already acquired
}
但是,总的来说,这似乎是一件值得怀疑的事情。您应该在需要的地方进行锁定,并相信它可以正常工作,而不是试图从外部进行监督。