同步和非同步為程式架構的頂層概念

2021-07-27 04:06:06 字數 730 閱讀 3374

最快的並行,應該是減少等待或無效操作,以及充分利用電腦的效能!

在減少等待這個阻點,我們使用到最多的是非同步設計了。關於非同步設計,在這幾年的工作中,也遇到一些程式設計麻煩,就是與同步和非同步問題悉悉相關!

如果程式或模組在最開始被設計為同步的,而在後期隨著資料量和併發數的增多,程式遭遇到執行緒耗盡問題。問題分析清楚後,想減少執行緒阻塞,需要把程式變更為非同步特性。在這個時間,您往往會發現在需要被處理非同步的阻點上,真實中的**實在是巢狀太深了。。。。。。非同步處理恢復執行時所需要的狀態資料,已經比較難以儲存了,很難做非同步了!

所以,總結來看,程式設計中的同步和非同步問題,在關於流程和程式結構上,往往是決定性;是需要在最初設計就應該被考慮到的頂層概念,不然後期就積重難返了!

同時,也就在前一段時間,和乙個大牛在討論某問題的時候,他給我給反問乙個問題:為什麼某某個網元可以處理地很快呢? 關於這個問題,在工作的幾年裡,熟視無睹,也還真沒有深入想過。在思考了一段時間,就意識到,它處理的很快,在除去硬體架構的優勢外,其實就是基於非同步設計出來的效果。它在軟體架構上為記憶體邏輯位址平坦的job排程機制,避免上下文切換所帶來的損耗,而在具體執行中就是大量邏輯處理、訪存操作和在非同步流程的邊緣進行的socket資料傳送操作。socket傳送操作幾乎是它執行時最大的時間等待了!再從稍微高一點的理論層來看,它的運轉機制,幾乎上已經是乙個與網路通訊相關的圖靈機,最快的處理速度了!

對此問題再深入細想下來,這幾年的網路通訊程式設計經歷中,涉及到的流程、狀態機、定時器,只是非同步程式設計具體化後的形現,常用、且重要:)

同步和非同步的概念?

程序同步用來實現程式併發執行時候的可再現性。一 程序同步及非同步的概念 1 程序同步 就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。也就是必須一件一件事做,等前一件做完了才能做下一件事.就像早上起床後,先洗涮,然後才能吃飯,不能在洗涮沒有完成時,就開始吃飯.按照這個定義,其實絕大多數...

非同步和同步概念理解

所謂非同步輸入輸出機制,是指在進行輸入輸出處理時,不必等到輸入輸出處理完畢才返回。所以非同步的同義語是非阻塞 none blocking 舉個例子 普通 b s模式 同步 ajax 技術 非同步 同步 提交請求 等待伺服器處理 處理完畢返回 這個期間客戶端瀏覽器不能幹任何事 非同步 請求通過事件觸發...

同步非同步通訊和程式編寫中的同步非同步

如果應用程式在執行期間只需要乙個執行緒,請使用下面的方法,這些方法適用於同步操作模式。若要在執行過程中使用單獨的執行緒處理通訊,請使用下面的方法,這些方法適用於非同步操作模式。三 軟體層次的阻塞和非阻塞模式 1 阻塞模式 阻塞模式執行i o操作完成前會一直進行等待,不會將控制權交給程式,一般可以設定...