多線程之:互斥鎖與自旋鎖

原文鏈接 ????相關(guān)鏈接1????相關(guān)鏈接2

【1】多線程安全隱患

1??資源共享

1.一塊資源可能會被多個(gè)線程共享牍颈,也就是多個(gè)線程可能會訪問同一塊資源

2.比如多個(gè)線程訪問同一個(gè)對象歇万、同一個(gè)變量挨稿、同一個(gè)文件

2??當(dāng)多個(gè)線程訪問同一塊資源時(shí)速址,很容易引發(fā)數(shù)據(jù)錯(cuò)亂和數(shù)據(jù)安全問題

【2】多線程安全問題解決

1??互斥鎖使用格式

@synchronized(鎖對象) {//需要鎖定的代碼}

注意:鎖定1份代碼只用1把鎖辕棚,用多把鎖是無效的

2??互斥鎖的優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn):能有效防止因多線程搶奪資源造成的數(shù)據(jù)安全問題

2.缺點(diǎn):需要消耗大量的CPU資源

3.互斥鎖的使用前提:多條線程搶奪同一塊資源

4.相關(guān)專業(yè)術(shù)語:線程同步

①線程同步的意思是:多條線程在同一條線上執(zhí)行(按順序地執(zhí)行任務(wù))

②互斥鎖奴曙,就是使用了線程同步技術(shù)

【3】原子和非原子屬性

OC在定義屬性時(shí)有nonatomic和atomic兩種選擇

1.atomic:原子屬性别凹,為setter方法加鎖(默認(rèn)就是atomic)

2.nonatomic:非原子屬性,不會為setter方法加鎖

【4】原子和非原子屬性的選擇

1??nonatomic和atomic對比

1.atomic:線程安全洽糟,需要消耗大量的資源

2.nonatomic:非線程安全炉菲,適合內(nèi)存小的移動(dòng)設(shè)備

2??iOS開發(fā)的建議

1.所有屬性都聲明為nonatomic

2.盡量避免多線程搶奪同一塊資源

3.盡量將加鎖堕战、資源搶奪的業(yè)務(wù)邏輯交給服務(wù)器端處理,減小移動(dòng)客戶端的壓力

注意點(diǎn):

注意點(diǎn):atomic系統(tǒng)自動(dòng)給我們添加的鎖不是互斥鎖拍霜,而是 自旋鎖

互斥鎖和自旋鎖共同點(diǎn)

  • 都能夠保證多線程在同一時(shí)候, 只能有一個(gè)線程操作鎖定的代碼

互斥鎖和自旋鎖不同點(diǎn)

-如果是互斥鎖,假如現(xiàn)在被鎖住了,那么后面來得線程就會進(jìn)入”休眠”狀態(tài), 直到解鎖之后, 又會喚醒線程繼續(xù)執(zhí)行

-如果是自旋鎖, 假如現(xiàn)在被鎖住了, 那么后面來得線程不會進(jìn)入休眠狀態(tài), 會一直傻傻的等待, 直到解鎖之后立刻執(zhí)行

-自旋鎖更適合做一些較短的操作

atomic 消耗的CPU資源嘱丢,atomic 消耗的CPU資源,atomic 消耗的CPU資源祠饺,重要的事情說三遍

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末越驻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吠裆,更是在濱河造成了極大的恐慌伐谈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件试疙,死亡現(xiàn)場離奇詭異诵棵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祝旷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門履澳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怀跛,你說我怎么就攤上這事距贷。” “怎么了吻谋?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵忠蝗,是天一觀的道長。 經(jīng)常有香客問我漓拾,道長阁最,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任骇两,我火速辦了婚禮速种,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘低千。我一直安慰自己配阵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布示血。 她就那樣靜靜地躺著棋傍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪难审。 梳的紋絲不亂的頭發(fā)上舍沙,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機(jī)與錄音剔宪,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛葱绒,可吹牛的內(nèi)容都是我干的感帅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼地淀,長吁一口氣:“原來是場噩夢啊……” “哼失球!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帮毁,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤实苞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后烈疚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黔牵,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年爷肝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猾浦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灯抛,死狀恐怖金赦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情对嚼,我是刑警寧澤夹抗,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站纵竖,受9級特大地震影響漠烧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜磨确,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一沽甥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乏奥,春花似錦摆舟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骗炉,卻和暖如春照宝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背句葵。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工厕鹃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兢仰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓剂碴,卻偏偏與公主長得像把将,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子忆矛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

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

  • 前言 iOS開發(fā)中由于各種第三方庫的高度封裝察蹲,對鎖的使用很少,剛好之前面試中被問到的關(guān)于并發(fā)編程鎖的問題催训,都是一知...
    喵渣渣閱讀 3,700評論 0 33
  • 一洽议、多線程基礎(chǔ) 基本概念 進(jìn)程進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序每個(gè)進(jìn)程之間是獨(dú)立的,每個(gè)進(jìn)程均運(yùn)行在其專用且...
    AlanGe閱讀 546評論 0 0
  • 線程概述 有些程序是一條直線漫拭,起點(diǎn)到終點(diǎn)亚兄;有些程序是一個(gè)圓,不斷循環(huán)嫂侍,直到將它切斷一個(gè)運(yùn)行著的程序就是一個(gè)進(jìn)程或者...
    褪而未變閱讀 298評論 0 0
  • 一: 多線程的基本概念1.同步與異步的概念1.1 同步 必須等待當(dāng)前語句執(zhí)行完畢儿捧,才可以執(zhí)行下一個(gè)語句。1.2...
    程序_猿閱讀 3,393評論 1 16
  • Object C中創(chuàng)建線程的方法是什么挑宠?如果在主線程中執(zhí)行代碼菲盾,方法是什么?如果想延時(shí)執(zhí)行代碼各淀、方法又是什么懒鉴? 1...
    AlanGe閱讀 1,736評論 0 17