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
}
hoạt động tốt, tuy nhiênkhó chịu chọn() hành vi trong c
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
}
không. Nó hoạt động lần đầu tiên, nhưng lần sau nó chạy qua vòng lặp while nó sẽ bị hết thời gian chờ ngay cả khi ổ cắm sd nhận dữ liệu. Dường như với tôi là một sự lãng phí tài nguyên để trống rỗng và lấp đầy mọi lúc.
Bất kỳ ai có giải thích tốt về lý do này và thậm chí tốt hơn, có lẽ là đề xuất cách tránh nó?
Tôi nghĩ rằng một số mã bạn đã thực hiện có thể quan trọng trong việc hiểu tại sao điều này hoạt động theo cách của nó. – SoapBox