異步(bu)與并行~大話目錄
寫(xie)過很多篇異步,線程,并(bing)行的(de)文(wen)章了,我覺得有必要總結一(yi)(yi)下了,然后把目錄整理一(yi)(yi)下,分享(xiang)給大家,這么大家看的(de)時(shi)候方便些!
非阻塞(sai)
異步(bu)(bu)操(cao)作(zuo)無須額外的(de)線(xian)程(cheng)負擔,并且使(shi)(shi)用(yong)(yong)回調(diao)的(de)方式(shi)進行處理,在設計(ji)良好(hao)的(de)情況下(xia),處理函數(shu)可(ke)以不(bu)必使(shi)(shi)用(yong)(yong)共享變量(即使(shi)(shi)無法完全不(bu)用(yong)(yong),最起碼(ma)可(ke)以減(jian)少 共享變量的(de)數(shu)量),減(jian)少了死(si)鎖的(de)可(ke)能。當(dang)然異步(bu)(bu)操(cao)作(zuo)也并非完美無暇。編寫異步(bu)(bu)操(cao)作(zuo)的(de)復雜(za)程(cheng)度較(jiao)高,程(cheng)序主要使(shi)(shi)用(yong)(yong)回調(diao)方式(shi)進行處理,與普通人的(de)思維方式(shi)有些(xie) 出入,而且難以調(diao)試。當(dang)需要執行I/O操(cao)作(zuo)時,使(shi)(shi)用(yong)(yong)異步(bu)(bu)操(cao)作(zuo)比使(shi)(shi)用(yong)(yong)線(xian)程(cheng)+同步(bu)(bu) I/O操(cao)作(zuo)更(geng)合適。異步(bu)(bu)和多線(xian)程(cheng)兩者都可(ke)以達到避免調(diao)用(yong)(yong)線(xian)程(cheng)阻(zu)塞的(de)目(mu)的(de),從而提高軟件的(de)可(ke)響應(ying)性。
異步本質為方法的回調
異步(bu)操作無(wu)(wu)須額外的(de)線程負(fu)擔,并且(qie)使(shi)(shi)用(yong)(yong)回調(diao)(diao)的(de)方式進行處(chu)理,在設計良好的(de)情況下,處(chu)理函(han)數可(ke)以不必(bi)使(shi)(shi)用(yong)(yong)共(gong)享(xiang)變量(即使(shi)(shi)無(wu)(wu)法完全(quan)不用(yong)(yong),最起(qi)碼可(ke)以減少(shao) 共(gong)享(xiang)變量的(de)數量),減少(shao)了死鎖的(de)可(ke)能(neng)。當然異步(bu)操作也并非完美無(wu)(wu)暇。編寫異步(bu)操作的(de)復雜程度較高,程序主要使(shi)(shi)用(yong)(yong)回調(diao)(diao)方式進行處(chu)理,與普通人的(de)思(si)維方式有(you)些 出(chu)入,而且(qie)難以調(diao)(diao)試(shi)。當需要執行I/O操作時,使(shi)(shi)用(yong)(yong)異步(bu)操作比使(shi)(shi)用(yong)(yong)線程+同步(bu) I/O操作更合(he)適。
線程爭奪與死鎖
多線程(cheng)(cheng)(cheng)中(zhong)的(de)(de)(de)(de)(de)處理(li)程(cheng)(cheng)(cheng)序(xu)依然是順(shun)序(xu)執行,符合普通人的(de)(de)(de)(de)(de)思(si)維習慣,所以編程(cheng)(cheng)(cheng)簡單。但是多線程(cheng)(cheng)(cheng)的(de)(de)(de)(de)(de)缺點也同樣明(ming)顯,線程(cheng)(cheng)(cheng)的(de)(de)(de)(de)(de)使用(yong)(濫用(yong))會給(gei)系統帶來上下文切換(huan)的(de)(de)(de)(de)(de)額外 負(fu)擔。并且線程(cheng)(cheng)(cheng)間(jian)的(de)(de)(de)(de)(de)共享變量可能造成死鎖的(de)(de)(de)(de)(de)出現(xian)。多線程(cheng)(cheng)(cheng)的(de)(de)(de)(de)(de)適用(yong)范圍則是那種需要長(chang)時間(jian)CPU運算的(de)(de)(de)(de)(de)場合,例如耗時較長(chang)的(de)(de)(de)(de)(de)圖形(xing)處理(li)和算法(fa)執行。
異步與并行-目錄
C#~異步編程續~.net4.5主推的await&async應用
EF架構~EF異步改造之路~讓DbContextRepository去實現異步接口
C#~異步編程再續~await與async引起的w3wp.exe崩潰
C#~異步編程再續~await與async引起的w3wp.exe崩潰-問題友好的解決
C#~異步(bu)編程再續~大(da)叔所理(li)解的并行編程(Task&Parallel)(最新(xin)2016-05-27日發(fa)布)
異步與并行~ReaderWriterLockSlim實現的共享鎖和互斥鎖
大叔也說并行和串行`性能提升N倍(N由操作系統位數和cpu核數決定)
異步與并行~CancellationTokenSource對線程的作用
永久更新中...