<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [toc] ## 前言 對于多線程開發,蘋果提供了多種編程方式: NSThread, GCD, NSOperation。 **它們之間的關系 :** - GCD的出現旨在替代NSThread, 它是基于 C 的底層的一套 API - NSOperation是基于 GCD 實現的 Objective-C 版本的API **多維度對比 :** | 類型 | 簡介 | 實現語言 | 生命周期 |使用頻率 | | ------ | ------ | ------ |------ |------ | | pthread | 1\. 一套通用的多線程API 2\. 適用于 Unix / Linux / Windows 等系統 3\. 跨平臺\\可移植 4\. 使用難度大| C| 程序員管理|幾乎不用 | | NSThread |1\. 使用更加面向對象 2\. 簡單易用,可直接操作線程對象 |OC |程序員管理 |偶爾使用 | | GCD |1\. 旨在替代NSThread等線程技術 2\. 充分利用設備的多核 3\. 基于 C 的底層的 API |C |自動管理 |經常使用 | | NSOperation |1\. 是基于 GCD 實現的 Objective-C API 2\. 比GCD多了一些更簡單實用的功能 3\. 使用更加面向對象|OC |自動管理 |經常使用 | 通過上面的對比,相信你對蘋果多線程技術有了一些了解。本文接下來會介紹GCD多線程技術的相關知識 ## 認識 dispatch_queue_create ``` dispatch_queue_create(const char *label, dispatch_queue_attr_t attr); ``` 可以看到創建隊列的方法有兩個參數可以傳,默認的創建方式是這樣的 ``` dispatch_queue_t queue = dispatch_queue_create("testQueue", NULL); ``` 后面的參數傳入”NULL”就可以了,默認創建的是一個**串行隊列**的。看看dispatch_queue_create這個方法的具體描述 >attr In OS X v10.7 and later or iOS 4.3 and later, specify DISPATCH_QUEUE_SERIAL (or NULL) to create a serial queue or specify DISPATCH_QUEUE_CONCURRENT to create a concurrent queue. In earlier versions, you must specify NULL for this parameter. attr在OS X v10.7后來或iOS 4.3及以后,指定**DISPATCH_QUEUE_SERIAL**(或零)創建一個**串行隊列** 通過指定**DISPATCH_QUEUE_CONCURRENT**來創建創建一個**并發隊列**。在早期版本中,您必須指定NULL為這個參數。 ``` // 創建串行隊列 dispatch_queue_t queue = dispatch_queue_create("com.reyzhang.testQueue", DISPATCH_QUEUE_SERIAL); // 創建并發隊列 dispatch_queue_t queueconcurrent = dispatch_queue_create("com.reyzhang.testQueue", DISPATCH_QUEUE_CONCURRENT); ``` 系統還有一個特殊的隊列, **全局并發隊列** ``` dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看