多線程之基本概念篇

轉載地址:http://www.cnblogs.com/wendingding/p/3806821.html

1.線程與隊列

隊列可以看作對線程的封裝和替代方案,在GCD中,我們面對的是隊列,而不必直接去處理線程。

當我們將任務添加到隊列中,GCD會自動將隊列中的任務取出,放到對應的線程中執行。

注:任務的取出遵循隊列的FIFO原則:先進先出,後進後出。


2.同步和異步的區別(執行)

同步:在當前的線程中執行

異步:在另一條線程中執行


3.併發隊列和串行隊列

併發隊列:Concurrent Dispatch Queue

可以讓多個任務併發(同時)執行(自動開啓多個線程同時執行任務),併發功能只有在異步(dispatch_async)函數下有效。(嘗試一下)

串行隊列:Serial Dispach Queue

讓任務一個接着一個執行。(一個任務執行完畢後,再執行下一個任務)

主隊列:main dispatch queue 是一個全局可用的串行隊列,其在行用程序的主線程上執行任務。此隊列的任務和應用程序的主循環(run loop)要執行的事件源交替執行。因爲其運行在應用程序的主線程,main queue經常用來作爲應用程序的一個同步點.


4.同步任務和異步任務:實質上同步提交就是同步任務(dispatch_sync),異步提交就是異步任務(dispatch_async).

同步任務:會阻塞當前線程。(SYNC)

異步任務:不會阻塞當前線程.(ASYNC)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章