iOS多線程之一:基本概念

計(jì)算機(jī)操作系統(tǒng)都有的基本概念,以下概念簡(jiǎn)單方式來(lái)描述。

進(jìn)程:就是在系統(tǒng)中,正在運(yùn)行的一個(gè)應(yīng)用程序。
線程:是 CPU 調(diào)度的最基本的單位,它有自己棧和寄存器。

進(jìn)程和線程的區(qū)別
進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式,進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其它進(jìn)程產(chǎn)生影響,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒(méi)有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí),耗費(fèi)資源較大,效率要差一些。但對(duì)于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。

并發(fā):多個(gè)任務(wù)同時(shí)發(fā)生,需要被處理。比如,田徑賽場(chǎng)上的起跑線上有多個(gè)運(yùn)動(dòng)員等待起跑。
并行:在某一個(gè)時(shí)間能夠同時(shí)處理多個(gè)任務(wù)。比如,火車站開(kāi)放了多個(gè)檢票口,同一時(shí)間能夠服務(wù)多個(gè)旅客。
串行:線程執(zhí)行只能依次逐一先后有序的執(zhí)行,串行中,一個(gè)任務(wù)的執(zhí)行必須以上一個(gè)任務(wù)執(zhí)行結(jié)束為前提。

串行和并行主要區(qū)別在于一個(gè)任務(wù)的執(zhí)行是否以上一個(gè)任務(wù)的完成為前提。串行中,一個(gè)任務(wù)的執(zhí)行必須以上一個(gè)任務(wù)執(zhí)行結(jié)束為前提,并行中,一個(gè)任務(wù)的執(zhí)行與上一個(gè)任務(wù)的執(zhí)行狀態(tài)無(wú)關(guān)。以排隊(duì)買票為例,串行像單個(gè)買票隊(duì)伍,單個(gè)賣票窗口,必須一個(gè)一個(gè)來(lái),串行像單個(gè)買票隊(duì)伍,多個(gè)賣票窗口,多個(gè)人可以同時(shí)買票。

同步:就是順序往下執(zhí)行。舉例:燒完水后泡茶
異步:就是幾件事情同時(shí)在執(zhí)行。燒水的時(shí)候拿出茶具,洗茶具,然后泡茶。其中燒水和拿茶具,洗茶具是同時(shí)進(jìn)行的。

二、iOS 多線程方案

iOS中其實(shí)目前有4套多線程方案,他們分別是:
1、pthreads
2、NSThread
3、GCD
4、NSOperation & NSOperationQueue

三、iOS 多線程原理
同一時(shí)間,CPU 只能處理一條線程,就是只有一條線程在工作,多線程之間的并發(fā)操作,其實(shí)就是 CPU 在多條線程之間快速的切換。如果 CPU 調(diào)度的線程的時(shí)間足夠快,就造成了多線程并發(fā)執(zhí)行的假象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 又來(lái)到了一個(gè)老生常談的問(wèn)題,應(yīng)用層軟件開(kāi)發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問(wèn)題開(kāi)始,來(lái)談?wù)劜?..
    tangsl閱讀 4,324評(píng)論 0 23
  • 1. 線程和進(jìn)程 在了解多線程之前,我們現(xiàn)在熟悉兩個(gè)概念,線程和進(jìn)程. 一. 線程 線程:進(jìn)程的基本執(zhí)行單元,一個(gè)...
    周灬閱讀 405評(píng)論 0 0
  • 多線程的四種解決方案:pthread,NSThread,GCD,NSOperation 一、多線程的基本概念進(jìn)程:...
    陽(yáng)明AI閱讀 553評(píng)論 0 3
  • 在那一刻,我意識(shí)到,我必須選擇,要么對(duì)一切屈服,得過(guò)且過(guò)地生活,要么就得努力,爭(zhēng)取過(guò)上夢(mèng)想的生活。 進(jìn)程、線程和以...
    背包技術(shù)閱讀 2,991評(píng)論 0 2
  • 本文主要是分享iOS多線程的相關(guān)內(nèi)容,為了更系統(tǒng)的講解,將分為以下7個(gè)方面來(lái)展開(kāi)描述。 多線程的基本概念 線程的狀...
    JasonL閱讀 341評(píng)論 0 2

友情鏈接更多精彩內(nèi)容