iOS開發(fā)之多線程筆記(一)

做開發(fā)這么久了,多線程一直都在用,卻沒有好好總結(jié)過.如今年底了,準(zhǔn)備總結(jié)一波.也方便以后自己再回來看.

我不太喜歡糾結(jié)概念上的東西這里就簡單淺顯的說下我的理解,實(shí)踐是檢驗(yàn)真理的唯一途徑,所以我比較喜歡直接擼代碼.
以下是大致的理論概括圖文:

  • 開發(fā)多線程,首先要了解什么是進(jìn)程.其實(shí)通俗的來講,一般一個(gè)線程指的就是一個(gè)程序.比如我們mac上運(yùn)行的一個(gè)軟件比如我們的Xcode.iPhone上運(yùn)行的一個(gè)app,其實(shí)就是一個(gè)進(jìn)程.
    進(jìn)程的五態(tài)模型
  • 什么是線程,線程就是進(jìn)程的最小組成單元.
    進(jìn)程 .png
  • 線程的執(zhí)行有2種


    串行

    各個(gè)線程按順序執(zhí)行,總時(shí)間是各個(gè)線程的耗時(shí)之和.

并行

并行,是多個(gè)線程同時(shí)執(zhí)行.總時(shí)間取決于耗時(shí)最長的子線程.

其實(shí)并行也不一定就是真的同時(shí)執(zhí)行多個(gè)線程

  1. 單核操作系統(tǒng),其實(shí)是cpu來回的在多個(gè)線程中調(diào)度.實(shí)質(zhì)上還是一次只能執(zhí)行一個(gè)線程的任務(wù)


    單核并行.png

2.多核操作系統(tǒng)


多核操作系統(tǒng).png
  • 多線程的優(yōu)點(diǎn)
  1. 簡化了編程模型:在一個(gè)比較復(fù)雜的系統(tǒng)設(shè)計(jì)中,如果我們想在單一的線程中高效的處理比較大的或者比較零散任務(wù)的時(shí)候其實(shí)是很難實(shí)現(xiàn)的 有了多線程,其實(shí)我們就可以將大的任務(wù)進(jìn)行切割,這樣就大大的簡化了我們的模型
  2. 更加的輕量級(jí)
  3. 提高了執(zhí)行效率
    說通俗點(diǎn),就好比原來一個(gè)人的活變成好幾個(gè)人同時(shí)干了,效率自然就提升了
  4. 提高資源利用率
  • 多線程缺點(diǎn)
  1. 增加了程序設(shè)計(jì)復(fù)雜性
    雖然前面說它可以簡化編程模型,但程序的復(fù)雜性也大大增加了,多線程其實(shí)要解決的最大問題是資源共享以及線程讀寫的問題.這個(gè)在我們的實(shí)際項(xiàng)目中經(jīng)常會(huì)遇到, 比如我們?cè)诓僮饕粋€(gè)數(shù)據(jù)庫,如果一個(gè)線程在執(zhí)行寫操作,另一個(gè)線程其實(shí)是不允許同時(shí)執(zhí)行寫操作的,否則在寫的過程中,就會(huì)出錯(cuò). 再比如有個(gè)變量,你在一個(gè)線程中修改它的值,同時(shí)在另一個(gè)線程中也改了它的值.這個(gè)時(shí)候你再去讀這個(gè)值的時(shí)候,很可能這個(gè)值,就不是你所預(yù)期的了. 所以這些種種的問題,都是我們?cè)谧鼍€程開發(fā)中需要注意的.所以這樣就大大增加了我們程序設(shè)計(jì)的復(fù)雜性.
  2. 占用內(nèi)存空間.
    在剛接觸多線程的時(shí)候,我發(fā)現(xiàn)這個(gè)東西真的很好用啊,提高執(zhí)行效率,結(jié)果造成不分場合,不分地點(diǎn)的亂用.這樣就會(huì)導(dǎo)致程序內(nèi)存的增加.對(duì)于客戶端開發(fā),程序的內(nèi)存是至關(guān)重要的.他直接影響了程序的使用性.所以多線程要用得適度,用得合理.
  3. 增大了cpu的調(diào)度開銷
    系統(tǒng)在做時(shí)間片輪轉(zhuǎn),調(diào)度的時(shí)候.cpu會(huì)在多個(gè)線程中切來切去,勢必會(huì)增大cpu的開銷,導(dǎo)致cpu的占用率增加,對(duì)系統(tǒng)會(huì)造成一定的影響.

接下來就是oc中常用到的幾種開辟線程需要用到的模塊.將在后文中一一探索.


...
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末记罚,一起剝皮案震驚了整個(gè)濱河市墅诡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毫胜,老刑警劉巖书斜,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诬辈,死亡現(xiàn)場離奇詭異酵使,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焙糟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門口渔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人穿撮,你說我怎么就攤上這事缺脉。” “怎么了悦穿?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵攻礼,是天一觀的道長。 經(jīng)常有香客問我栗柒,道長礁扮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任瞬沦,我火速辦了婚禮太伊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逛钻。我一直安慰自己僚焦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布曙痘。 她就那樣靜靜地躺著芳悲,像睡著了一般立肘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上名扛,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天赛不,我揣著相機(jī)與錄音,去河邊找鬼罢洲。 笑死踢故,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惹苗。 我是一名探鬼主播殿较,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼桩蓉!你這毒婦竟也來了淋纲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤院究,失蹤者是張志新(化名)和其女友劉穎洽瞬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體业汰,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伙窃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了样漆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片为障。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖放祟,靈堂內(nèi)的尸體忽然破棺而出鳍怨,到底是詐尸還是另有隱情,我是刑警寧澤跪妥,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布鞋喇,位于F島的核電站,受9級(jí)特大地震影響眉撵,放射性物質(zhì)發(fā)生泄漏侦香。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一执桌、第九天 我趴在偏房一處隱蔽的房頂上張望鄙皇。 院中可真熱鬧,春花似錦仰挣、人聲如沸伴逸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽错蝴。三九已至洲愤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顷锰,已是汗流浹背柬赐。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留官紫,地道東北人肛宋。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像束世,于是被迫代替她去往敵國和親酝陈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容