[英]read() on non-blocking socket without select for low-latency
我有一個單獨的線程從非阻塞套接字讀取,我可以使用盡可能多的CPU,因為低延遲是項目最重要的方面。 簡單地循環讀取()調用比使用select()首先查找可讀的套接字更快嗎?
偽代碼:
while (!finished) {
int rc = read(socket, buf);
if (rc > 0) {
// process buf
} else if (rc == 0) {
// eof, reconnect to server
} else if (errno == EGAIN) {
// nothing to do, continue
} else if (errno == ECONNREFUSED) {
// connection refused, attempt connect again
} else {
// error not yet supported
}
}
不,它不會更快,因為您不知道數據何時到達。 所以,要么你會睡得太久,哪個不會更快,要么你會睡得太短,在這種情況下,你必須再這么做,這不會更快,或者你會很幸運,准確地睡覺正確的時間,這不是更快,需要運氣,或者你根本不會睡覺,這意味着你必須刻錄CPU直到數據到達,這也不會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.