簡體   English   中英

在非阻塞套接字上讀取()而不選擇低延遲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM