select無差別輪詢
(監(jiān)聽的數(shù)量传惠,可讀,可寫稻扬,異常)返回值是所有滿足條件的監(jiān)聽集合個(gè)數(shù)
poll可以指定size卦方,
可以突破select的上限1024
event poll集成了上面兩個(gè),用的是紅黑樹泰佳,如果有事件發(fā)生傳回文件描述符到用戶態(tài)的一個(gè)隊(duì)列中
有兩種觸發(fā)模式盼砍,減少阻塞等待:ET 邊沿觸發(fā) LT 水平觸發(fā)
邊沿觸發(fā)只在有事件寫過來的時(shí)候才會(huì)觸發(fā)
比如有5000個(gè)字節(jié)傳過來尘吗,只需要讀50個(gè)字節(jié),就能知道要不要讀剩下的字符了浇坐,所以就用邊沿觸發(fā)
epoll 用紅黑樹和鏈表睬捶,并且epoll_wait用了回調(diào)函數(shù),不用每次都把數(shù)據(jù)從用戶態(tài)拷貝到內(nèi)核態(tài)近刘。
select 要每次都從用戶態(tài)拷貝到內(nèi)核態(tài)擒贸,并且是自己輪詢,直到有數(shù)據(jù)就從內(nèi)核拷貝數(shù)據(jù)到用戶十分耗時(shí)
poll沒有個(gè)數(shù)限制觉渴,因?yàn)橛玫氖擎湵硇锼危鴖elect只能用有32*32個(gè)地址,應(yīng)為select的fd最多只有32個(gè)正數(shù)大小
在ET模式下疆拘,要做成非阻塞蜕猫,因?yàn)檫@樣很容易會(huì)死鎖
[https://blog.csdn.net/russell_tao/article/details/7160071]
(https://blog.csdn.net/russell_tao/article/details/7160071)
https://juejin.im/post/5a3b7c1a5188252582278ef2