epoll

    2熱度

    1回答

    下面的單線程UDP客戶端應用程序看到使用epoll而不是簡單地調用非阻塞套接字上的recvfrom/sendto會帶來性能好處嗎? 讓我來解釋客戶端。 我正在編寫單線程UDP客戶端(自定義協議),它使用非阻塞I/O發送和接收數據,我的同事建議我使用epoll。 客戶端發送和接收多個信息包,這些信息包都與一個唯一的會話ID相關聯,並且可以同時運行多個會話。 如果我使用epoll,epoll_wait

    2熱度

    2回答

    epoll_wait,select和poll函數都提供超時。然而,在epoll中,它的分辨率爲1ms。選擇& ppoll是提供亞毫秒超時的唯一一個。 這將意味着最好在1毫秒的時間間隔做其他的事情。在現代CPU上,我可以在1ms內完成很多其他的事情。 所以做其他事情往往小於1ms,我實際上是提供零超時(基本上禁用它)。而且我可能會在主循環的某個地方添加我自己的usleep,以阻止它咀嚼太多的CPU。

    2熱度

    1回答

    我創建了一個非阻塞套接字,然後使用epoll來管理套接字。我沒有在epoll_wait上設置超時時間。但是我發現epoll在5s到10s內返回,然後我檢查getsockopt在SO_ERROR,連接查找超時。爲什麼在如此短的時間內超時? 我嘗試使用工具來限制TCP包。這種情況是這樣的: 當我的客戶發送一個SYN爲了連接到服務器。但服務器無法以5秒至10秒的時間發回ACK。然後epoll_wait返

    6熱度

    1回答

    下面的代碼基本上與貓一個select.select文件(): f = open('node.py') fd = f.fileno() while True: r, w, e = select.select([fd], [], []) print '>', repr(os.read(fd, 10)) time.sleep(1) 當我試着使用epoll的類似的事情

    4熱度

    1回答

    如果我是epoll_wait()在一個監聽套接字上,並且當epoll_wait()返回時指示它有活動(在這種情況下,一個等待accept()的連接),那麼如果accept()調用失敗並且errno = EINTR,那麼epoll_wait()是否表示在下次返回時監聽套接字上的相同連接正在等待? 即,我需要做的線沿線的東西: while(1){ epoll_wait(epfd, &even

    9熱度

    1回答

    假設本地linux主機上的TCP套接字與遠程主機處於連接狀態。本地主機使用epoll_wait通知遠程主機套接字上的事件。 如果遠程主機分別叫: shutdown(s,SHUT_WR); 其連接端口,以指明它完成發射,什麼事件(S)將epoll_wait本地主機爲它的插座上的回報? 我假設EPOLLIN總是會返回並且隨後的recv調用將返回0以指示遠程端已完成傳輸。 EPOLLHUP或EPOL

    12熱度

    1回答

    假設下面的代碼,「襪子」是一個句柄到先前通過的epfd指定的epoll的文件描述符註冊TCP套接字。 epoll_ctl(epfd, EPOLL_CTL_DEL, sock, &ev); close(sock); 是否仍然需要調用epoll_ctl如果套接字隨後會被關閉?或者由於關閉它而導致套接字隱式地取消註冊?

    1熱度

    1回答

    我有一個單獨的線程服務器進程,在一個循環通過epoll的手錶少數(約100)插座,我的問題是,如何決定epoll_wait超時值的最佳值,因爲這是一個單如果在套接字上沒有任何活動,程序保持空閒,我的猜測是,如果我給太小的超時,這會導致太多的epoll_wait調用,這是沒有害處的,因爲即使我的過程也是如此許多epoll_wait調用,否則它會閒置,但還有一點,我在這個(8核心)盒子上運行了很多其他

    0熱度

    1回答

    我需要timerfd_create用於基於事件的應用程序製作了超過9990個文件描述符,並得到一個EMFILE「打開的文件太多」。 所以我適應一般的參數和限制: sys.fs.file-MAX 1000000使全系統的限制不應該是一個問題。 sys.fs.nr_open是1048576,所以我相對較大的file-max值仍然應該被認爲是有效的。 limit.conf中的每個用戶的限制是100000

    0熱度

    1回答

    我在C++中有一個套接字服務器,我正在使用epoll。我正在向服務器發送一個包含HeaderPacket和NormalPacket的字符。 首先我正在閱讀HeaderPacket,然後閱讀NormalPacket。我現在的問題是,當我關閉客戶端(我試圖使用關閉和關閉 - 相同的輸出)時,我在第一個recv(讀取頭數據包的那個)上得到了一些奇怪的字節,並且在分段錯誤。另外,當我將我的內容字符的大小從