我需要在发出异步请求之前设置一个互斥,然后在另一个线程上的这个请求的回调中解锁互斥。
苹果公司的文件显示:
警告: NSLock类使用POSIX线程来实现其锁定行为。当向NSLock对象发送解锁消息时,必须确保消息是从发送初始锁定消息的同一线程发送的。从不同的线程解锁可能导致未定义的行为。
我怎样才能避免这种“未定义的行为”,并使它像预期的那样工作呢?
发布于 2011-06-23 16:56:36
更好的方法是:使用NSOperationQueue或GCD队列作为同步原语。
锁是昂贵的,信号量或多或少是带有计数器的锁。
基于队列的编码效率要高得多,特别是在使用内置队列机制时。
发布于 2011-06-23 16:12:30
为此使用NSCondition来向其他线程发出信号,这些线程现在可以安全地通过。
发布于 2011-06-23 16:10:58
不要用互斥物来做这个。使用初始化为1或其他允许跨线程通信/锁定的锁机制的信号量。
雷格斯·马丁
https://stackoverflow.com/questions/6457045
复制相似问题