synchronized在Swift中
互斥对象锁synchronized在OC中的用法是
1 | @synchronized(self) { |
但是在swift中变成了
1 | objc_sync_enter(self) |
如果函数在 if 循环内进行了return可能会导致 objc_sync_exit无法执行 导致死锁,为了解决这种情况,可以使用 defer
1 | objc_sync_enter(self) |
defer
defer在函数结束后按照入栈顺序逆向执行,无论以何种形式结束都不会跳过执行,官方文档参考Defer Statement与之对应的概念在C++中有个叫RAII的设计模式
1 |
|
打印结果
1 | First.... |