關於select函式

2021-08-05 19:41:36 字數 385 閱讀 9032

1.阻塞模式下必須開多執行緒來解決阻塞問題,但是為每個socket開了多執行緒後,多執行緒的執行開銷很大,速度超級慢。

如果,多執行緒的速度能跟得上,那是非常不錯。但是事實上可能並非如此。

2.因此select模型出現了,select模型賦予了乙個執行緒中處理多個socket的可能性,不過最大也就是1024個。因此要支援無限多個,還要開啟多執行緒。乙個select函式是1024個。那麼多個select函式就可以無限多個支援。

這樣就達到了乙個執行緒支援1024個連線。速度上就能得到部分保障。

有的人說,開啟乙個就ok啦,那麼乙個執行緒最多也就支援1024個。乙個主線程,如果超過1024個,那麼就開啟個新執行緒去select。

3.最大是1024,悲劇啊。。因此後面出現了epool模型,比較給力。

關於 select 函式

select在socket程式設計中還是比較重要的,可是對於初學socket的人來說都不太愛用select寫程式,他們只是 習慣寫諸如connect accept recv或recvfrom這樣的阻塞程式 所謂阻塞方式block,顧名思義,就是程序或 是執行緒執行到這些函式時必須等待某個事件的發生,...

關於select 控制項

通過 的測試,測得,select 控制項值最多106個 q easyui的datagrid中能做到 雙擊移除資料 現在這個使用select控制項做的,展示不全。雙擊刪除 dialogdiv.find select name nodelist dblclick function selecteduse...

select函式詳解

select的機制中提供了乙個fd set的資料結構,實際上是long型別的陣列,每乙個陣列元素都能與一開啟的檔案控制代碼 不管是socket控制代碼,還是其他檔案或命名管道或裝置控制代碼 建立聯絡,建立聯絡的工作由程式設計師完成,當呼叫select 時,由核心根據io狀態修改fd set的內容,由...