多線程問題

在項(xiàng)目什么時(shí)候選擇使用GCD罪既,什么時(shí)候選擇NSOperation?

項(xiàng)目中使用NSOperation的優(yōu)點(diǎn)是NSOperation是對線程的高度抽象萝衩,在項(xiàng)目中使用它,會使項(xiàng)目的程序結(jié)構(gòu)更好没咙,子類化NSOperation的設(shè)計(jì)思路,是具有面向?qū)ο蟮膬?yōu)點(diǎn)(復(fù)用祭刚、封裝),使得實(shí)現(xiàn)是多線程支持涡驮,而接口簡單暗甥,建議在復(fù)雜項(xiàng)目中使用捉捅。
項(xiàng)目中使用GCD的優(yōu)點(diǎn)是GCD本身非常簡單撤防、易用棒口,對于不復(fù)雜的多線程操作寄月,會節(jié)省代碼量无牵,而Block參數(shù)的使用漾肮,會是代碼更為易讀茎毁,建議在簡單項(xiàng)目中使用克懊。

你用過NSOperationQueue么?如果用過或者了解的話七蜘,你為什么要使用NSOperationQueue,實(shí)現(xiàn)了什么?請描述它和GCD的區(qū)別和類似的地方(提示:可以從兩者的實(shí)現(xiàn)機(jī)制和適用范圍來描述)

1> GCD是純C語言的API橡卤,NSOperationQueue是基于GCD的OC版本封裝
  2> GCD只支持FIFO的隊(duì)列夜只,NSOperationQueue可以很方便地調(diào)整執(zhí)行順序蒜魄、設(shè)置最大并發(fā)數(shù)量
  3> NSOperationQueue可以在輕松在Operation間設(shè)置依賴關(guān)系扔亥,而GCD需要寫很多的代碼才能實(shí)現(xiàn)
  4> NSOperationQueue支持KVO谈为,可以監(jiān)測operation是否正在執(zhí)行(isExecuted)旅挤、是否結(jié)束(isFinished)伞鲫,是否取消(isCanceld)
  5> GCD的執(zhí)行速度比NSOperationQueue快
  任務(wù)之間不太互相依賴:GCD
  任務(wù)之間有依賴\或者要監(jiān)聽任務(wù)的執(zhí)行情況:NSOperationQueue

什么是TCP連接的三次握手

第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器粘茄,并進(jìn)入SYN_SEND狀態(tài)秕脓,等待服務(wù)器確認(rèn)柒瓣;
  第二次握手:服務(wù)器收到syn包吠架,必須確認(rèn)客戶的SYN(ack=j+1)芙贫,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k)傍药,即SYN+ACK包磺平,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)拐辽;
  第三次握手:客戶端收到服務(wù)器的SYN+ACK包拣挪,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)俱诸,此包發(fā)送完畢菠劝,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)睁搭,完成三次握手赶诊。
  握手過程中傳送的包里不包含數(shù)據(jù)介袜,三次握手完畢后甫何,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)遇伞。理想狀態(tài)下辙喂,TCP連接一旦建立鸠珠,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前巍耗,TCP 連接都將被一直保持下去渐排。斷開連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開TCP連接的請求炬太,斷開過程需要經(jīng)過“四次握手”(過程就不細(xì)寫了驯耻,就是服務(wù)器和客戶端交互亲族,最終確定斷開)

__block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:

1.__block不管是ARC還是MRC模式下都可以使用,可以修飾對象霎迫,還可以修飾基本數(shù)據(jù)類型。
2.__weak只能在ARC模式下使用知给,也只能修飾對象(NSString)瓤帚,不能修飾基本數(shù)據(jù)類型(int)涩赢。
3.__block對象可以在block中被重新賦值戈次,__weak不可以筒扒。
4.__block對象在ARC下可能會導(dǎo)致循環(huán)引用怯邪,非ARC下會避免循環(huán)引用霎肯,__weak只在ARC下使用擎颖,可以避免循環(huán)引用观游。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市懂缕,隨后出現(xiàn)的幾起案子允跑,更是在濱河造成了極大的恐慌搪柑,老刑警劉巖聋丝,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件工碾,死亡現(xiàn)場離奇詭異,居然都是意外死亡渊额,警方通過查閱死者的電腦和手機(jī)况木,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門旬迹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來火惊,“玉大人奔垦,你說我怎么就攤上這事屹耐〈涣裕” “怎么了惶岭?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俗他。 經(jīng)常有香客問我,道長兆衅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任羡亩,我火速辦了婚禮,結(jié)果婚禮上畏铆,老公的妹妹穿的比我還像新娘。我一直安慰自己吉殃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布蛋勺。 她就那樣靜靜地躺著,像睡著了一般抱完。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巧娱,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天碉怔,我揣著相機(jī)與錄音禁添,去河邊找鬼撮胧。 笑死老翘,一個(gè)胖子當(dāng)著我的面吹牛芹啥,可吹牛的內(nèi)容都是我干的酪捡。 我是一名探鬼主播叁征,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逛薇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起永罚,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤卧秘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后官扣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惕蹄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卖陵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泪蔫,死狀恐怖棒旗,靈堂內(nèi)的尸體忽然破棺而出撩荣,到底是詐尸還是另有隱情铣揉,我是刑警寧澤餐曹,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布逛拱,位于F島的核電站凸主,受9級特大地震影響橘券,放射性物質(zhì)發(fā)生泄漏卿吐。R本人自食惡果不足惜旁舰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一嗡官、第九天 我趴在偏房一處隱蔽的房頂上張望箭窜。 院中可真熱鬧衍腥,春花似錦磺樱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽块差。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憨闰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工鹉动, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泽示。 一個(gè)月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓缸血,卻偏偏與公主長得像械筛,于是被迫代替她去往敵國和親属百。 傳聞我的和親對象是個(gè)殘疾皇子变姨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

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

  • 多線程的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):多線程能夠適當(dāng)提高程序的執(zhí)行效率,適當(dāng)提高資源利用率(CPU定欧、內(nèi)存利用率)。缺點(diǎn):每開啟一條...
    重慶妹子在霾都閱讀 780評論 4 4
  • 一怒竿、多線程的底層實(shí)現(xiàn)? 1>線程:Mach是第一個(gè)以多線程方式處理任務(wù)的系統(tǒng)耕驰,因此多線程的底層實(shí)現(xiàn)機(jī)制是基于Mac...
    archyly閱讀 1,286評論 0 6
  • 一、選擇題 對以下四種多線程的技術(shù)簡介錯(cuò)誤的是( C )A. pthread是一套通用的多線程API,適用于Uni...
    奮斗的蝸牛閱讀 430評論 0 1
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用朦肘,...
    LZM輪回閱讀 3,309評論 0 6
  • GCD 純C語言,提供了非常多強(qiáng)大的函數(shù) ?GCD的優(yōu)勢 GCD是蘋果公司為多核的并行運(yùn)算提出的解決方案 GCD會...
    Scheng_閱讀 201評論 0 0