了解IO多路復用應該對epoll和select不陌生吧。首先,select是有缺陷的,就是當事件發(fā)生(調用select)的時候,都需要在用戶態(tài)和內核態(tài)之間拷貝fd數組,要知道用戶態(tài)和內核態(tài)之間進行內存的拷貝是非常昂貴的,如果有上萬級別的并發(fā)網絡需要處理的時候,服務器根本處理不來。這時候,Linux內核的開發(fā)者應該算是簡單又粗暴的增加了一個內核調用,就是epoll了,有時候簡單粗暴的東西還是能提高效率的。先來看select接口:
C語言使用函數調用,我們再熟悉不過了,但是函數調用在內存中究竟發(fā)生了什么真的清楚嗎?只有搞清楚內存里的內幕,才算完全搞懂函數的調用。
liqinglong1023