美文网首页
GCD线程安全

GCD线程安全

作者: s2mh | 来源:发表于2017-06-22 19:49 被阅读217次

    译自官方文档

    分发队列与线程安全

    在分发队列的环境中谈论线程安全显得有些奇怪,但是线程安全仍然是与其相关的话题。任何时候在你的应用中实现并行功能,都有一些你需要清楚的点:

    • 分发队列本身是线程安全的。也就是说,你可以在任意线程中奖任务提交到分发队列中,无需给队列加锁或使用同步机制。
    • 别把dispatch_sync函数所在的队列[1]传递给这个函数。这么做会死锁该队列。如果你需要分发到当前的队列,使用dispatch_async函数。
    • 避免在提交到分发队列的任务中加锁。尽管在任务中加锁是安全的,一旦你请求加锁,如果锁失效就会阻塞整个串行队列。相似的,对于并行队列,等待一个锁会阻止其他任务的执行。如果你需要同步你对部分代码,使用串行分发队列而不是锁。
    • 虽然你可以获得当前任务潜在线程的信息,但最好不要这么做。关于分发队列兼容线程的更多信息,请见Compatibility with POSIX Threads

    1. 原文是队列,没有特指串行队列。但是实践表明,这种死锁只会发生在串行队列中。

    相关文章

      网友评论

          本文标题:GCD线程安全

          本文链接:https://www.haomeiwen.com/subject/bngfcxtx.html