多線程基礎(chǔ)

進(jìn)程

  • 什么是進(jìn)程

    • 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序
    • 每個(gè)進(jìn)程之間是獨(dú)立的,每個(gè)進(jìn)程均運(yùn)行在其專用且受保護(hù)的內(nèi)存空間內(nèi)
  • 例如:同時(shí)打開xcode、QQ、微信,系統(tǒng)會(huì)分別啟動(dòng)一個(gè)進(jìn)程

通過(guò)"活動(dòng)監(jiān)視器"可以查看mac系統(tǒng)中所有進(jìn)程

線程

  • 什么是線程
    • 每個(gè)進(jìn)程要執(zhí)行任務(wù),必須要有線程(每個(gè)進(jìn)程至少要有一條線程)
    • 一個(gè)進(jìn)行(程序)的所有任務(wù)都在線程中執(zhí)行


      實(shí)例圖

線程的串行

  • 一個(gè)線程中任務(wù)的執(zhí)行是串行

  • 如果要在一個(gè)線程中執(zhí)行多個(gè)任務(wù),那么只能一個(gè)一個(gè)地按順序執(zhí)行這些任務(wù)

  • 也就是說(shuō),在同一時(shí)間內(nèi),一個(gè)線程只能執(zhí)行一個(gè)任務(wù)

  • 比如在一個(gè)線程中下載三個(gè)文件(分別為文件A、文件B、文件C)


    線程串行執(zhí)行

多線程

  • 什么是多線程

  • 一個(gè)進(jìn)程中可以開啟多條線程,每條線程可以并行(同時(shí))執(zhí)行不同的任務(wù)

  • 進(jìn)程和線程之間的關(guān)系:進(jìn)程--->車間, 線程--->車間工人

  • 多線程技術(shù)可以提高程序的執(zhí)行效率

  • 比如同時(shí)開啟3條線程分別下載3個(gè)文件(分別是文件A、文件B、文件C)


    多線程并行

多線程的原理

多線程的原理

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

思考:如果線程非常多,會(huì)發(fā)生什么情況

  • CPU會(huì)在N多線程之間調(diào)度,CPU會(huì)累死,消耗大量的CPU資源
  • 每條線程被調(diào)度執(zhí)行的頻次會(huì)降低(線程的執(zhí)行效率降低)

多線程的優(yōu)缺點(diǎn)

多線程有點(diǎn)

  • 能適當(dāng)提高程序的執(zhí)行效率
  • 能適當(dāng)提高資源利用率(CPU、內(nèi)存的利用率)

多線程缺點(diǎn)

  • 創(chuàng)建子線程室友開銷的,iOS下主要成本包括:內(nèi)核數(shù)據(jù)結(jié)構(gòu)(大約1KB)、??臻g(子線程512K、主線程1MB,也可以使用-setStackSize:設(shè)置,但必須是4K的倍數(shù),而且最小是16K),創(chuàng)建線程大約需要90毫秒的創(chuàng)建時(shí)間
  • 如果開啟大量線程,會(huì)降低程序的性能
  • 線程越多,CPU在調(diào)度線程的開銷就越大
  • 程序設(shè)計(jì)更加復(fù)雜:比如線程之間的通信、多線程的數(shù)據(jù)共享

多線程在iOS開發(fā)中的應(yīng)用

  • 什么是主線程

    • 一個(gè)iOS程序運(yùn)行后,默認(rèn)會(huì)開啟1條線程,稱為“主線程” 或 “UI線程”
  • 主線程的主要作用

    • 顯示或刷新UI界面
    • 處理UI事件(比如點(diǎn)擊事件、滾動(dòng)事件等)
  • 主線程的使用注意

    • 不要將比較耗時(shí)的操作放到主線程中
    • 耗時(shí)操作會(huì)卡主線程,嚴(yán)重影響UI的流暢度,給用戶一種“卡頓”的壞體驗(yàn)

iOS中多線程的實(shí)現(xiàn)方案

iOS中多線程實(shí)現(xiàn)方案.png
?著作權(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)容

  • 進(jìn)程的概念 進(jìn)程是操作系統(tǒng)上的概念,操作系統(tǒng)是直接驅(qū)動(dòng)、管理計(jì)算機(jī)硬件的一款管理軟件,它的運(yùn)行幫助我們利用計(jì)算機(jī)硬...
    伶俐ll閱讀 814評(píng)論 0 3
  • 前言 多線程并發(fā)編程是Java編程中重要的一塊內(nèi)容,也是面試重點(diǎn)覆蓋區(qū)域,所以學(xué)好多線程并發(fā)編程對(duì)我們來(lái)說(shuō)極其重要...
    嘟爺MD閱讀 7,405評(píng)論 21 272
  • 小時(shí)候讀古詩(shī),總是覺(jué)得古人故作風(fēng)雅,任何感覺(jué)都咬文嚼字,那么多的心緒,要用那么少的字去描述,好像字越少的表達(dá),才能...
    簡(jiǎn)樂(lè)兮閱讀 1,260評(píng)論 3 15
  • 四時(shí)身健道吉祥,六秩生辰客滿堂。 今日壽星衣喚彩,明朝鶴歲體增康。 前瞻風(fēng)雨征程酷,后盼兒孫勵(lì)志強(qiáng)。 愜意夕輝無(wú)限...
    峰韻9023閱讀 486評(píng)論 0 0
  • 2013年,在即將離開學(xué)校的時(shí)候,我向老師流露了自己的心聲:我可能不會(huì)在本專業(yè)做太久。而老師給我的回答是:干一行愛(ài)...
    嚴(yán)情木閱讀 316評(píng)論 0 0

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