while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
FD_ZERO(&set);
FD_SET(sd,&set);
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
工作正常,但是刺激性選擇()行爲
FD_ZERO(&set);
FD_SET(sd,&set);
while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
沒有。它首次運行,但下一次運行while循環時,即使sd套接字接收到數據,它也會超時。在我看來,浪費資源必須每次都清空和填充設置。
任何人都有一個很好的解釋,爲什麼這是,甚至更好,也許建議如何避免它?
我認爲你理解的一些代碼對於理解爲什麼表現得那麼重要。 – SoapBox 2008-11-12 23:27:22