<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>dispatch-queues on adolsai's echo</title><link>https://adolsai.com/tag/dispatch-queues/</link><description>Recent content in dispatch-queues on adolsai's echo</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 07 Aug 2015 18:05:45 +0800</lastBuildDate><atom:link href="https://adolsai.com/tag/dispatch-queues/index.xml" rel="self" type="application/rss+xml"/><item><title>Concurrency Programming Guide 4 Dispatch Queues</title><link>https://adolsai.com/archives/Concurrency-Programming-Guide-4-Dispatch-Queues.html</link><pubDate>Fri, 31 Jul 2015 00:39:00 +0800</pubDate><guid>https://adolsai.com/archives/Concurrency-Programming-Guide-4-Dispatch-Queues.html</guid><description>&lt;h1 id="dispatch-queues"&gt;Dispatch Queues&lt;/h1&gt;&#10;&lt;h2 id="type-of-dispatch-queues"&gt;type of Dispatch Queues&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;类型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;描述&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;限制&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Serial&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;也叫&lt;em&gt;private dispatch queue&lt;/em&gt;，串行执行queue上的每一个task。 每一个task都在独立的线程里运行，由dispatch queue统一管理。经常用来控制对特定资源的访问（如临界资源）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;木有限制，你可以创建任意多个的serial dispatch queue，他们之间是并行的。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Concurrent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;也叫&lt;em&gt;global diapatch queue&lt;/em&gt;，并行执行queue里面的每一个task。每一个task都在独立的线程里运行，由dispatch queue统一管理。并行的数量是动态地，由system当前的资源状态决定。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;concurrent dispatch queue有四个，由系统提供，根据优先级别区分为default、low、high、background。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Main dispatch queue&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;这个diapatch queue在main thread里串行执行task。所以这个queue是关联main thread的run loop的，用来执行dispatch source相关的任务。因为该queue在main thread执行task，所以常用作各任务的同步点&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全局唯一的特殊serial dispatch queue&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item></channel></rss>