2015-04-03 65 views
1

幾個問題我有幾個問題:iOS GCD:在哪個線程上執行自定義調度隊列?在GCD

  1. 當創建任何自定義調度隊列(串行或並行),其上線做他們執行任務。

  2. 我有點從GCD文件here通過下面的文字困惑:

除了您創建的任何自定義的隊列,系統會自動創建一個串行隊列,並將其綁定到你的應用程序的主線。有關獲取主線程隊列的更多信息,請參閱在運行時獲取通用隊列。

  • 會發生什麼如果dispatch_suspend()或dispatch_resume()調用全局隊列?
  • +0

    你可以參考這第三個問題http://stackoverflow.com/questions/20332936/pause-main-thread-until-background-thread-retrieves-user-input – 2015-04-03 12:43:31

    回答

    1

    你應該將這些事情分成不同的問題。這種大問題使得未來的搜索者很難。

    當在任何線程上創建任何自定義調度隊列(串行或併發)時,它們將執行任務。

    這沒有定義。您無法對將使用哪個底層線程做任何假設。從同一隊列中的塊到它可能會改變。在某些情況下,它甚至可能是調度線程。

    應用程序主線程上的隊列是主調度隊列。您可以通過dispatch_get_main_queue()訪問它。

    全局隊列忽略dispatch_suspend()dispatch_resume()。這在dispatch_get_global_queue()的討論中有記錄。