我有一组方法,它们都同步到类对象(不能使用self,因为该对象的多个实例可能在多个线程中使用)。其中一些方法调用类中的其他方法,这些方法也会在类对象上同步。不知何故,这样做可以正常工作,不会引起我预期中的死锁。
我原以为testA将被阻止运行,因为testB已经锁定了类对象,但显然情况并非如此。
@synchronized是否有特殊功能,还是底层互斥锁的一个特性?
以下是示例代码:
调用testB时的输出为:
我原以为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]);
}
}
调用testB时的输出为:
Doing something in B
Doing something in A
A returned: 1