[源文]
這裡執行緒模型是指winsock相關的執行緒模型設計。
在本軟體的設計的過程中有些問題是涉及到winsock的問題,為了能夠很好的設計執行緒模型,必須理解清楚socket的內部工作機制。為此,首先從外面開始分析。
1、使用多執行緒是為了避免應用程式主介面在i/o操作中沒有反應,出現假死機現象。
socket是一種特殊的i/o,所以很可能會出現這種現象。例如傳送資料,或者連線伺服器的時候。
2、為了提高cpu利用率(在多cpu環境)和改善應用程式的併發效能。
在多cpu環境,幾個執行緒可以同時在不同的cpu上執行,從而提高了應用程式的效率。另外,應用程式有時候需要併發(包括單個cpu環境下的輪流執行)才能使得應用程式的行為比較流暢和連貫。例如收報,發報,報文處理三個工作如果交給乙個執行緒完成,可能會造成報文處理的時候收報或者發報不能繼續的結果。
因為socket是i/o,所以,多個執行緒操作同乙個i/o將會引發複雜的同步和互斥問題。如果處理不當,就會出現不可預知的結果。
執行緒切換和管理會造成計算機效率的降低;執行緒所需的資料結構也是記憶體開銷。
(精彩盡在原文出處,有興趣的讀者請到原文出處看:socket程式設計與執行緒模型一
)
Windows Socket 程式設計
伺服器端 客戶端 在 http fayaa.com code 處理的高亮顯示效果 c 語言 臨時自用 include include void main if lobyte wsadata wversion 1 hibyte wsadata wversion 1 socket socksrv soc...
Windows Socket程式設計
windows下socket程式設計主要包括以下幾部分 服務端1 初始化windows socket庫。2 建立socket。3 繫結socket。4 監聽。5 accept。6 接收 傳送資料。客戶端1 初始化windows socket庫。2 建立socket。3 連線socket。4 接收 傳...
Windows Socket程式設計
1 初始化windows socket庫。2 建立socket。3 繫結socket。4 監聽。5 accept。6 接收 傳送資料。1 初始化windows socket庫。2 建立socket。3 連線socket。4 接收 傳送資料。服務端每接收到乙個客戶端的socket,則建立乙個執行緒。滿...