linux並發伺服器中epoll+多線程分別怎麼理解?linux並發伺服器中可以用epol來實現 我看了幾次epoll的工作原理 就是不是很明白,epoll再加上多線程實現的話 我就更不明了。請知道的幫我講講他們怎麼揉在一起?同時使用多線程和epoll的工作原理是啥啊?
暱稱: lgch123456 時間: 2011-01-04 16:42:49某個線程處理某個特定事件吧
通過epoll檢測一些事件,事件觸發時,建立一個線程來專職處理這個事件
暱稱: justkk 時間: 2011-01-04 16:52:20引用 1 樓 justkk 的回複:
某個線程處理某個特定事件吧
通過epoll檢測一些事件,事件觸發時,建立一個線程來專職處理這個事件
不是說可以用線程池來事先建你需要的線程來做嗎?如果是這樣的話 是不是每個線程做特定是事件,
epoll檢測到事件是以fd返回到 這樣的話 是不是每個fd就一個線程?
暱稱: lgch123456 時間: 2011-01-04 17:00:06事件多路分離機制和線程是兩碼事
暱稱: linsen_519 時間: 2011-01-04 17:02:28引用 3 樓 linsen_519 的回複:
事件多路分離機制和線程是兩碼事
是兩碼子事啊,但怎麼揉在一起來提高伺服器工作效率啊?
暱稱: lgch123456 時間: 2011-01-04 17:07:33引用 4 樓 lgch123456 的回複:
引用 3 樓 linsen_519 的回複:
事件多路分離機制和線程是兩碼事
是兩碼子事啊,但怎麼揉在一起來提高伺服器工作效率啊?
你這個問題問的有點廣,我不敢回答,怕誤人子弟~哈哈
給你點建議吧~~
高輸送量,低延遲的網路編程關鍵
1.不要採用一個串連一個線程的方式,而是盡量利用作業系統的事件多路分離機制
如:UNIX下的 select linux下的epoll BSD下的kqueue
或者使用這些機制的高層API (boost.asio&&ACE Reactor)
2.盡量使用非同步I/O,而不是同步
3.當事件多路分離單線程無法滿足並發需求時,將事件多路分離的線程擴充成線程池
暱稱: linsen_519 時間: 2011-01-04 17:16:52引用 5 樓 linsen_519 的回複:
引用 4 樓 lgch123456 的回複:
引用 3 樓 linsen_519 的回複:
事件多路分離機制和線程是兩碼事
是兩碼子事啊,但怎麼揉在一起來提高伺服器工作效率啊?
你這個問題問的有點廣,我不敢回答,怕誤人子弟~哈哈
給你點建議吧~~
高輸送量,低延遲的網路編程關鍵
1.不要採用一個串連一個線程的方式,而是盡量利用作業系統的事件多路分離機制
如:UNIX下……
當事件多路分離單線程無法滿足?怎麼理解啊?
暱稱: lgch123456 時間: 2011-01-04 17:21:45引用 6 樓 lgch123456 的回複:
引用 5 樓 linsen_519 的回複:
引用 4 樓 lgch123456 的回複:
引用 3 樓 linsen_519 的回複:
事件多路分離機制和線程是兩碼事
是兩碼子事啊,但怎麼揉在一起來提高伺服器工作效率啊?
你這個問題問的有點廣,我不敢回答,怕誤人子弟~哈哈
給你點建議吧~~
高輸送量,低延遲的網路編程關鍵
1.不要採用一個串連一個線程的方式,而是……
當事件多路分離單線程無法滿足並發需求時
-----------------------
比如這個伺服器原來能處理10000使用者的並發請求,後來規模大了又來了10000個使用者,伺服器吃不消了!
暱稱: linsen_519 時間: 2011-01-04 17:26:16單線程當事件多路分離?這個的工作機制是啥 a ?剛問錯了
暱稱: lgch123456 時間: 2011-01-04 17:30:10如果單線程這3個字影響你了,那你就當沒這3個字吧!
我的意思是說,你作的任何事情不都是在一個線程裡實現的嗎?
int main(){
cout<<"hello word"<<endl;
}
這裡難道沒有一個主線程嗎?!
暱稱: linsen_519 時間: 2011-01-04 17:36:06引用 9 樓 linsen_519 的回複:
如果單線程這3個字影響你了,那你就當沒這3個字吧!
我的意思是說,你作的任何事情不都是在一個線程裡實現的嗎?
int main(){
cout<<"hello word"<<endl;
}
這裡難道沒有一個主線程嗎?!
我只是對線程池中epoll的使用原理不明白 所以一些路就很難走去了。你能給我講講這個東西嗎?
暱稱: lgch123456 時間: 2011-01-04 17:45:47