Giu*_*ppe 4 macos cocoa multithreading objective-c thread-safety
我需要在创建异步请求之前设置一个互斥锁,然后在另一个线程上的此请求的回调中解锁互斥锁.
Apple文档说:
警告:NSLock类使用POSIX线程来实现其锁定行为.向NSLock对象发送解锁消息时,必须确保从发送初始锁定消息的同一线程发送消息.从其他线程解锁锁定可能导致未定义的行为.
如何避免这种"未定义的行为"并使其按预期工作?
更好的是; 使用NSOperationQueue或GCD队列作为同步原语.
锁是昂贵的,并且信号量或多或少是带有计数器的锁.
基于队列的编码效率更高,尤其是在使用内置排队机制时.