同步和異步爲程序架構的頂層概念

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

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

如果程序或模塊在最開始被設計爲同步的,而在後期隨着數據量和併發數的增多,程序遭遇到線程耗盡問題。問題分析清楚後,想減少線程阻塞,需要把程序變更爲異步特性。在這個時間,您往往會發現在需要被處理異步的阻點上,真實中的代碼實在是嵌套太深了。。。。。。異步處理恢復運行時所需要的狀態數據,已經比較難以保存了,很難做異步了!

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章