objective-c – Objective C NSLock:在不同的线程上锁定和解锁NSLock

objective-c – Objective C NSLock:在不同的线程上锁定和解锁NSLock,第1张

概述我需要在创建异步请求之前设置一个互斥锁,然后在另一个线程上的此请求的回调中解锁互斥锁. Apple文档说: Warning: The NSLock class uses POSIX threads to implement its locking behavior. When sending an unlock message to an NSLock object, you must be su 我需要在创建异步请求之前设置一个互斥锁,然后在另一个线程上的此请求的回调中解锁互斥锁.

Apple文档说:

Warning: The NSLock class uses POSIX
threads to implement its locking
behavior. When sending an unlock
message to an NSLock object,you must
be sure that message is sent from the
same thread that sent the initial lock
message. Unlocking a lock from a
different thread can result in
undefined behavior.

如何避免这种“未定义的行为”并使其按预期工作?

解决方法 更好的是;使用NSOperationQueue或GCD队列作为同步原语.

锁是昂贵的,并且信号量或多或少是带有计数器的锁.

基于队列的编码效率更高,尤其是在使用内置排队机制时.

总结

以上是内存溢出为你收集整理的objective-c – Objective C NSLock:在不同的线程上锁定和解锁NSLock全部内容,希望文章能够帮你解决objective-c – Objective C NSLock:在不同的线程上锁定和解锁NSLock所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1007540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存