gpt4 book ai didi

objective-c - @synchronized block 是否保证释放它们的锁?

转载 作者:太空狗 更新时间:2023-10-30 03:47:03 27 4
gpt4 key购买 nike

假设这些是实例方法并且调用了-run

-run 返回时是否释放了对 self 的锁定?

...
- (void)dangerous {
@synchronized (self) {
[NSException raise:@"foo" format:@"bar"];
}
}

- (void)run {
@try { [self dangerous]; }
@catch (NSException *ignored) {}
}
...

最佳答案

@synchronized(obj) { code } block 实际上等同于

NSRecursiveLock *lock = objc_fetchLockForObject(obj);
[lock lock];
@try {
code
}
@finally {
[lock unlock];
}

尽管这方面的任何特定方面实际上都只是实现细节。但是,是的,无论控制如何退出 block ,@synchronized block 都保证释放锁。

关于objective-c - @synchronized block 是否保证释放它们的锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com