res = select(maxfd + 1, &rfds, NULL, NULL, &timeout);
if (res < 0 && errno != EINTR && errno != 0) {
// log it
return;
}
if (FD_ISSET(socket1, &rfds)) {
// do something
}
if (FD_ISSET(socket2, &rfds)) {
// do something
}
}
上面大致講解了如何使用select,這里其實我們可以很明顯的看出一個缺點的,
1. 就是我們并不返回符合要求的fd,而是把所有的fd都返回,所以返回到用戶態(tài)之后我們要進(jìn)行fd的歷遍最終才能找到有相應(yīng)的fd,這顯然是比較耗費事件的