Ben*_*ron 3 mutex deadlock locking objective-c
我有一组所有同步到类对象的方法(不能使用self,因为这个对象的多个实例可以在多个线程中使用).其中一些方法调用类中的其他方法,这些方法也在类对象上同步.不知何故,这可以工作,并不会导致我期望的死锁.
我认为testA将被阻止运行,因为testB已经锁定了类对象,但显然情况并非如此.
是@synchronized正在做的特殊事情还是这是底层互斥锁的一个特性?
有效的示例代码:
- (NSUInteger)testA
{
@synchronized(self.class)
{
NSLog(@"Doing something in A");
}
return 1;
}
- (void)testB
{
@synchronized(self.class)
{
NSLog(@"Doing something in B");
NSLog(@"A returned: %i", [self testA]);
}
}
Run Code Online (Sandbox Code Playgroud)
调用testB时输出为:
Doing something in B
Doing something in A
A returned: 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2458 次 |
| 最近记录: |