1、如果程序包含有多個子任務併發,多執行緒就可以提供子任務的非同步執行。這種方式對於上下文切換的開銷較少。
2、如果每個程序只有乙個執行緒,對於併發多程序的執行上下文的切換需要花費較多的開銷
3、只有在來自另一程序的執行緒將要使用處理器的情況下才會發生上下文切換。
4、多執行緒可以增加應用程式的吞吐量。如果程序中只有乙個執行緒,乙個i/o請求就可以停止整個程序。而如果程序中含有多個執行緒,當乙個執行緒等待i/o請求時,其他執行緒可以執行。整個應用程式不必等待每個i/o請求的完成。
5、執行緒並不需要子任務間的特殊通訊機制。執行緒可以輕易地在任務間傳遞與接收資料。程序間利用程序間通訊機制進行通訊時會占用系統資源。
但採用多執行緒機制也有缺點:
1、執行緒 需要同步併發訪問記憶體,這就導致執行緒讀寫記憶體的衝突,必須採取衝突避免機制來解決此問題。
2、而程序之間是孤立的,如果程序建立了不良資料,該資料只限制於該程序。如果任務分解為多執行緒,乙個執行緒的不良資料可能會影響其他的執行緒。
在 Ajax 應用程式上使用 Nagios
在我的一篇有關 ajax 安全工具 參見 參考資料 的文章中,我推薦了一些增強應用程式的工具,包括 firefox 工具和外掛程式,用來提高和解決 ajax 應用程式內部的安全問題。在另一篇有關 加速 ajax 應用程式的同時避開 web 服務漏洞 的文章中,我展示了什麼是 web 服務漏洞以及 s...
GDB除錯 多程序與多執行緒程式
先看一下比較經典的gdb部落格 用gdb除錯程式 一 用gdb除錯程式 二 一 gdb常用命令 二 gdb與多程序 預設設定下,在除錯多程序程式時gdb只會呼叫主程序,但是gdb v7.0 支援多程序的分別與同步除錯。即gdb支援同時除錯多個程序。只需要設定follow fork mode 預設為 ...
Python 多程序與多執行緒的應用(二)
上篇部落格中我們提到了使用process這個包來建立程序,除此之外,我們還可以自定義乙個類,繼承process類,通過例項化這個類來例項化乙個新的程序物件,下面請看乙個簡單的例子 import time from multiprocessing import process class lakers...