這裡線程模型是指winsock相關的線程模型設計。
在本軟件的設計的過程中有些問題是涉及到winsock的問題,為了能夠很好的 設計線程模型,必須理解清楚socket的內部工作機制。為此,首先從外面開始分 析。
一、為什麼使用多線程
1、使用多線程是為了避免應用程序主界面在I/O操作中沒有反應,出現假死 機現象。
Socket是一種特殊的I/O,所以很可能會出現這種現象。例如發送數據,或者 連接服務器的時候。
2、為了提高cpu利用率(在多cpu環境)和改善應用程序的並發性能。
在多cpu環境,幾個線程可以同時在不同的cpu上執行,從而提高了應用程序 的效率。另外,應用程序有時候需要並發(包括單個cpu環境下的輪流執行)才 能使得應用程序的行為比較流暢和連貫。例如收報,發報,報文處理三個工作如 果交給一個線程完成,可能會造成報文處理的時候收報或者發報不能繼續的結果 。
二、多線程帶來的問題
因為socket是I/O,所以,多個線程操作同一個I/O將會引發復雜的同步和互 斥問題。如果處理不當,就會出現不可預知的結果。
線程切換和管理會造成計算機效率的降低;線程所需的數據結構也是內存開 銷。