poll-syscall

    0熱度

    3回答

    下面的代碼工作正常,它發送所有正確的數據,並且它正在接收正確的數據。 當我用它來基準非常快的服務器,基準的CPU佔用率約10%。但是,當我測試一臺速度慢的服務器時,這個數字會上升到50%左右 - 就像服務器的基準測試/壓力測試一樣。 這是由什麼top的報告會。 爲什麼要使用這麼多的CPU?我懷疑我濫用民意調查,但我不知道如何? 的CPU時間慢的服務器是4倍的基準,而對於快速的服務器是7倍的基準。

    0熱度

    1回答

    我發現poll()系統調用即使在套接字被對等關閉後也返回POLLIN事件。我看到POLLIN和POLLERR都設置了。即使在read()調用返回-1後,這種情況仍然會發生。 只有在沒有POLLIN的情況下,我的邏輯纔會處理POLLERR,以確保我讀取了在套接字斷開連接之前已經到達的任何數據包。因此,我永遠不會處理POLLERR,因爲始終設置POLLIN。 爲什麼poll()在套接字錯誤後返回POL

    0熱度

    2回答

    我想在poll()返回錯誤時在我的代碼中測試場景。但我不知道如何強制poll()返回一個錯誤。我試圖無限制地調用poll()塊並嘗試發送一個SIGINT,但是這只是簡單地停止了這個過程。 有沒有辦法讓poll()返回一個錯誤? 謝謝。

    0熱度

    1回答

    我想知道POSIX select()調用中的超時值。我明白爲什麼可能需要值0(用於輪詢文件描述符)。常用的還有其他什麼價值,以及目的是什麼?

    0熱度

    1回答

    有可能套接字上的write()調用失敗,但poll()不是 檢測到任何錯誤?是否有任何類型的錯誤會導致寫入失敗,但不被poll()系統調用視爲錯誤? 我有一個調度程序線程持續監視套接字,並負責檢測和處理套接字錯誤,負責 。 我有一個工作線程,當調度程序線程通知時,它會在套接字上進行實際的讀寫操作。 工作線程的write()調用失敗,但調度程序線程的poll()系統調用從不報告錯誤。這怎麼發生!

    1熱度

    1回答

    我試圖在每次更改狀態時都讀取一個GPIO值。 /sys/class/gpio/gpio499/value 我已經設置/sys/class/gpio/gpio499/edge是既 我試圖監視一個單獨的線程中使用調查命令值的變化。以下是代碼片段: void PIN_gpio_poll(size_t gpio) //GPIO 499 { char path[30]; ch

    0熱度

    1回答

    我有我的網絡連接管理aysnc線程池模型。一個調度程序線程保持調用poll()和一個poll()表示如此的 可讀/寫的工作線程池。 請考慮poll()表示套接字已準備就緒的情況。但工作線程尚未處理讀取。我禁用讀取輪詢,而工作線程尚未處理讀取。現在遠程端斷開連接並輪詢() 以POLLERR/POLLHUP返回。當工作線程在此之後執行read()調用時會發生什麼? 即使有一些尚未讀取的數據,read(

    -2熱度

    1回答

    我有一個C++服務器和客戶端。 我正在使用poll()系統調用來監視服務器上的套接字以進行讀取,寫入和錯誤。 對於某些連接,我發現poll()在發送一堆數據並在中途失敗後檢測到一個ECONNRESET。在客戶端,我也看到一個ECONNRESET被報告。 所以基本上雙方都報告說遠程端關閉了連接。 這是怎麼發生的? 如何調試?是否有任何我可以啓用的tcp層日誌記錄?