作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在处理多线程代码。数据访问通过“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
}
但是,总的来说,这似乎是一件值得怀疑的事情。您应该在需要的地方进行锁定并相信它会正常工作,而不是试图从外部对其进行监督。
关于objective-c - 有没有办法检查是否获得了 NSLock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556422/
我是一名优秀的程序员,十分优秀!