Objective-C では @synchronized を使用してクリティカル セクションを定義できることがわかっていますが、複数のスレッドがメソッドまたはコード ブロックにアクセスしているかどうかを知る方法はありますか?
質問する
265 次
1 に答える
1
NSLock
オブジェクト (参照) を使用して、次を使用してロックをテストできますtryLock
。
@interface MyObject : NSObject
{
NSLock *_lock;
}
...
@end
@implementation MyObject
- (id)init
{
...
_lock = [[NSLock alloc] init];
...
}
- (BOOL)myMethod
{
if (![_lock tryLock])
{
NSLog(@"Failed to acquire lock");
return NO;
}
// Thread has exclusive access
// Caution; the lock won't be automatically unlocked if this method throws an exception
// so add some exception handling here to ensure it's always unlocked...
@try
{
// Do stuff
}
@finally
{
[_lock unlock];
}
return YES;
}
@end
于 2013-02-01T12:53:24.923 に答える