?01-關(guān)于多線程&網(wǎng)絡(luò)

1.多線程的底層實(shí)現(xiàn)做祝?

1>首先搞清楚什么是線程状婶、什么是多線程

2> Mach是第一個(gè)以多線程方式處理任務(wù)的系統(tǒng)蛇更,因此多線程的底層實(shí)現(xiàn)機(jī)制是基于Mach的線程

3>開(kāi)發(fā)中很少用Mach級(jí)的線程李茫,因?yàn)镸ach級(jí)的線程沒(méi)有提供多線程的基本特征,線程之間是獨(dú)立的

4>開(kāi)發(fā)中實(shí)現(xiàn)多線程的方案

C語(yǔ)言的POSIX接口:#include <pthread.h>

OC的NSThread

? C語(yǔ)言的GCD接口(性能最好谆棺,代碼更精簡(jiǎn))

? OC的NSOperation和NSOperationQueue(基于GCD)

2.線程間怎么通信?

1> performSelector:onThread:withObject:waitUntilDone:

2> NSMachPort

3.網(wǎng)絡(luò)圖片處理問(wèn)題中怎么解決一個(gè)相同的網(wǎng)絡(luò)地址重復(fù)請(qǐng)求的問(wèn)題罕袋?

利用字典(圖片地址為key改淑,下載操作為value)可以參考SDWebImage。

4.用NSOpertion和NSOpertionQueue處理A,B,C三個(gè)線程,要求執(zhí)行完A,B后才能執(zhí)行C,怎么做炫贤?

'''//創(chuàng)建隊(duì)列

NSOperationQueue*queue = [[NSOperationQueuealloc]init];

//創(chuàng)建3個(gè)操作

NSOperation*a = [NSBlockOperationblockOperationWithBlock:^{

NSLog(@"operation1---");

}];

NSOperation*b = [NSBlockOperationblockOperationWithBlock:^{

NSLog(@"operation1---");

}];

NSOperation*c = [NSBlockOperationblockOperationWithBlock:^{

NSLog(@"operation1---");

}];

//添加依賴(lài)

[caddDependency:a];

[caddDependency:b];

//執(zhí)行操作

[queueaddOperation:a];

[queueaddOperation:b];

[queueaddOperation:c];'''

5.列舉cocoa中常見(jiàn)對(duì)幾種多線程的實(shí)現(xiàn)溅固,并談?wù)劧嗑€程安全的幾種解決辦法及多線程安全怎么控制?

1>只在主線程刷新訪問(wèn)UI

2>如果要防止資源搶奪兰珍,得用synchronized進(jìn)行加鎖保護(hù)

3>如果異步操作要保證線程安全等問(wèn)題,盡量使用GCD(有些函數(shù)默認(rèn)就是安全的)

6.GCD內(nèi)部怎么實(shí)現(xiàn)的

1> iOS和OS X的核心是XNU內(nèi)核侍郭,GCD是基于XNU內(nèi)核實(shí)現(xiàn)的

2> GCD的API全部在libdispatch庫(kù)中

3> GCD的底層實(shí)現(xiàn)主要有Dispatch Queue和Dispatch Source

? Dispatch Queue:管理block(操作)

? Dispatch Source:處理事件

7.你用過(guò)NSOperationQueue么?如果用過(guò)或者了解的話,你為什么要使用NSOperationQueue亮元,實(shí)現(xiàn)了什么猛计?請(qǐng)描述它和GCD的區(qū)別和類(lèi)似的地方(提示:可以從兩者的實(shí)現(xiàn)機(jī)制和適用范圍來(lái)描述)。

1> GCD是純C語(yǔ)言的API爆捞,NSOperationQueue是基于GCD的OC版本封裝

2> GCD只支持FIFO的隊(duì)列奉瘤,NSOperationQueue可以很方便地調(diào)整執(zhí)行順序、設(shè)置最大并發(fā)數(shù)量

3> NSOperationQueue可以在輕松在Operation間設(shè)置依賴(lài)關(guān)系煮甥,而GCD需要寫(xiě)很多的代碼才能實(shí)現(xiàn)

4> NSOperationQueue支持KVO盗温,可以監(jiān)測(cè)operation是否正在執(zhí)行(isExecuted)、是否結(jié)束(isFinished)成肘,是否取消(isCanceld)

5> GCD的執(zhí)行速度比NSOperationQueue快

任務(wù)之間不太互相依賴(lài):GCD

任務(wù)之間有依賴(lài)\或者要監(jiān)聽(tīng)任務(wù)的執(zhí)行情況:NSOperationQueue

8.既然提到GCD卖局,那么問(wèn)一下在使用GCD以及block時(shí)要注意些什么?它們兩是一回事兒么双霍?block在ARC中和傳統(tǒng)的MRC中的行為和用法有沒(méi)有什么區(qū)別砚偶,需要注意些什么?

Block的使用注意:

1>block的內(nèi)存管理

2>防止循環(huán)retian

? 非ARC(MRC):__block

? ARC:__weak\__unsafe_unretained

9.在異步線程中下載很多圖片,如果失敗了,該如何處理?請(qǐng)結(jié)合RunLoop來(lái)談?wù)劷鉀Q方案.(提示:在異步線程中啟動(dòng)一個(gè)RunLoop重新發(fā)送網(wǎng)絡(luò)請(qǐng)求,下載圖片)

1>重新下載圖片

2>下載完畢,利用RunLoop的輸入源回到主線程刷新UIImageVIUew

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洒闸,一起剝皮案震驚了整個(gè)濱河市染坯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丘逸,老刑警劉巖单鹿,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸣个,居然都是意外死亡羞反,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)囤萤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)昼窗,“玉大人,你說(shuō)我怎么就攤上這事涛舍〕尉” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵富雅,是天一觀的道長(zhǎng)掸驱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)没佑,這世上最難降的妖魔是什么毕贼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蛤奢,結(jié)果婚禮上鬼癣,老公的妹妹穿的比我還像新娘陶贼。我一直安慰自己,他們只是感情好待秃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布拜秧。 她就那樣靜靜地躺著,像睡著了一般章郁。 火紅的嫁衣襯著肌膚如雪枉氮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天暖庄,我揣著相機(jī)與錄音聊替,去河邊找鬼。 笑死培廓,一個(gè)胖子當(dāng)著我的面吹牛佃牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播医舆,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼象缀!你這毒婦竟也來(lái)了蔬将?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤央星,失蹤者是張志新(化名)和其女友劉穎霞怀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體莉给,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毙石,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颓遏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徐矩。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叁幢,靈堂內(nèi)的尸體忽然破棺而出滤灯,到底是詐尸還是另有隱情,我是刑警寧澤曼玩,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布鳞骤,位于F島的核電站,受9級(jí)特大地震影響黍判,放射性物質(zhì)發(fā)生泄漏豫尽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一顷帖、第九天 我趴在偏房一處隱蔽的房頂上張望美旧。 院中可真熱鬧渤滞,春花似錦、人聲如沸陈症。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)录肯。三九已至趴腋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間论咏,已是汗流浹背优炬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厅贪,地道東北人蠢护。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像养涮,于是被迫代替她去往敵國(guó)和親葵硕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • Object C中創(chuàng)建線程的方法是什么贯吓?如果在主線程中執(zhí)行代碼懈凹,方法是什么?如果想延時(shí)執(zhí)行代碼悄谐、方法又是什么介评? 1...
    AlanGe閱讀 1,736評(píng)論 0 17
  • 1.介紹下內(nèi)存的幾大區(qū)域? 2.你是如何組件化解耦的? 3.runtime如何通過(guò)selector找到對(duì)應(yīng)的IMP...
    小孩仔閱讀 1,662評(píng)論 0 21
  • 目錄 一、基本概念1.多線程2.串行和并行爬舰, 并發(fā)3.隊(duì)列與任務(wù)4.同步與異步5.線程狀態(tài)6.多線程方案 二们陆、GC...
    BohrIsLay閱讀 1,581評(píng)論 5 12
  • 一.資源搶奪 2> 資源搶奪解決方案 @sychronized{ } dispatch_barrier_async...
    藍(lán)心兒的藍(lán)色之旅閱讀 1,371評(píng)論 0 4
  • 從上大學(xué)開(kāi)始到現(xiàn)在參加工作,一直習(xí)慣了一個(gè)人的生活情屹。坪仇。 周末一般回家享受爸媽的嘮叨。垃你。烟很。偶爾跟同學(xué)出去吃個(gè)飯逛個(gè)街...
    鄒鄒0414閱讀 195評(píng)論 4 2