只有Java能做高并發(fā)嗎?C#如何解決高并發(fā)問(wèn)題呢?

首先現(xiàn)在高并發(fā)的解決方案都非常成熟了,不僅是Java能做好,Pyton和C#也是毫無(wú)問(wèn)題的!個(gè)人比較擅長(zhǎng)C#,就分享下C#的高并發(fā)處理方式(非系統(tǒng)架構(gòu),僅從開(kāi)發(fā)角度)。

1,異步編程

.NET 4.5 及以上框架中引入的async/await關(guān)鍵字,異步編程已經(jīng)非常方便了,異步編程有兩個(gè)好處:不阻塞主線(xiàn)程(比如UI線(xiàn)程),提高服務(wù)端應(yīng)用的吞吐量。

2.并行編程

并行編程的出現(xiàn)實(shí)際上是隨著CPU有多核而興起的,目的是充分利用多核CPU的計(jì)算能力。并行的支持主要靠.NET 4.0引入的任務(wù)并行庫(kù)和并行LINQ。

3響應(yīng)式編程

這個(gè)了解的人可能不多,其實(shí)響應(yīng)式編程把事件流看作數(shù)據(jù)流,數(shù)據(jù)流是從IEnumable中拉取的,而事件流是從IObservable推送給你的。為什么響應(yīng)式編程可以實(shí)現(xiàn)并發(fā)呢?這是因?yàn)镽x做到線(xiàn)程不可知,每次事件觸發(fā),后續(xù)的處理會(huì)從線(xiàn)程池中任意取出一個(gè)線(xiàn)程來(lái)處理。且可以對(duì)事件設(shè)置窗口期和限流。

4數(shù)據(jù)流編程

數(shù)據(jù)流(DataFlow)編程可能大家就更陌生了,不過(guò)還是有些常用場(chǎng)景可以使用數(shù)據(jù)流來(lái)解決。數(shù)據(jù)流其實(shí)是在任務(wù)并行庫(kù)(TPL)上衍生出來(lái)的一套處理數(shù)據(jù)的擴(kuò)展(也結(jié)合了異步的特性),TPL也是處理并行編程中任務(wù)并行和數(shù)據(jù)并行的基礎(chǔ)庫(kù)。

再然后還有Actor模型,這個(gè)大家接觸的更少就先不分享了。.NET經(jīng)過(guò)多年的發(fā)展,目前已經(jīng)非常豐富全面甚至冗余了,大家有關(guān)心的,請(qǐng)關(guān)注我,持續(xù)更新最新的.NetCore學(xué)習(xí)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容