epoll

    5熱度

    1回答

    我的印象是boost :: asio會默認使用epoll設置,而不是選擇實現,但在運行一些測試後,它看起來像我的設置使用select。 OS:RHEL 4 內核:2.6 GCC:3.4.6 我寫了一個小的測試程序,以驗證正在使用哪個反應器頭部,並且它象使用選擇反應器,而不是它看起來epoll反應堆。 #include <boost/asio.hpp> #include <string> #i

    0熱度

    1回答

    如何區分「偵聽器」文件描述符和「客戶端」文件描述符? 下面是我在manpage例子中看到: if(events[n].data.fd == listener) { ... } else { ... } 「但是,如果我沒有獲得listener什麼? 對不起,如果這是一個模糊的問題。我不太確定如何說出來。

    1熱度

    1回答

    我正在使用epoll和pthreads在C++中爲Linux編程應用程序(客戶端/服務器),但我不知道如何處理connect()調用在連接描述符列表中的新連接與epoll_wait()正在運行(邊緣觸發),如何才能做到這一點?...我可以使用一個虛擬文件描述符來觸發一個事件和等待的景象?,或者一個簡單的電話connect()可以觸發事件? ... 對不起我的英文不好...

    5熱度

    2回答

    我的linux應用程序正在執行非阻塞TCP連接系統調用,然後使用epoll_wait來檢測三次握手完成。 有時epoll_wait返回兩個POLLOUT & POLLERR事件爲同一套接字描述符設置。 我想了解TCP級別發生了什麼。我無法按需重現它。我的猜測是,在我的事件循環內部的兩個調用epoll_wait之間我們有一個SYN + ACK/ACK/FIN序列,但是我再次無法再現它。

    0熱度

    2回答

    作爲一個c編碼器現在 - 既不是新手也不是專家。現在,我在PPC Linux上有一個C語言的守護進程應用程序。我使用PHP的socket_connect作爲客戶端來本地連接到此服務。服務器使用epoll通過Unix套接字複用連接。用戶提交的字符串是使用strstr()解析某些字符/單詞的,如果找到,則會同時產生4個可連接的線程到不同的網站。我使用套接字,連接,寫入和讀取,在每個線程的端口80上通過

    22熱度

    2回答

    Tornadoweb和Nginx是目前流行的Web服務器,許多基準測試表明它們在某些情況下比Apache有更好的性能。所以我的問題是: 'epoll'是讓他們如此之快的最重要原因嗎?如果我想寫一個好的套接字服務器,我可以從中學到什麼?

    3熱度

    1回答

    最近,我正在學習如何編寫一個高性能的Web服務器。有一個由RedHat實驗說epoll比aio更快。有人說,因爲Linux內核中的aio是用pthread實現的。我很難找到最新的信息來證明這一點。我不知道epoll在Linux上現在比aio還好嗎?所以我想知道我在哪裏可以得到關於Linux 2.6.x上aio的最新信息。多謝!

    5熱度

    1回答

    int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 我有點困惑的maxevents參數。假設我想寫一個可以處理高達10k連接的服務器。我是否會定義maxevents爲10000,或者出於某種原因它應該更低?

    2熱度

    3回答

    epoll手冊頁說,如果沒有讀取完成,使用EPOLLET(邊緣觸發)註冊的fd不應該通知兩次EPOLLIN。 因此,在EPOLLIN之後,您需要在epoll_wait能夠在新數據上返回新的EPOLLIN之前清空緩衝區。 但是,我遇到了這種方法的問題,因爲我看到重複EPOLLIN事件未觸及的fds。 這是strace輸出,0x200是EPOLLRDHUP,它尚未在我的glibc頭文件中定義,但在內核

    2熱度

    2回答

    如何確定是否可以將給定數量的字節寫入文件句柄(實際上是套接字)? (另外,如何「未讀」的數據我已經從其他文件句柄讀?) 我想是這樣的: n = how_much_can_I_write(w_handle); n = read(r_handle, buf, n); assert(n==write(w_handle, buf, n)); 兩個文件句柄(r_handle和w_handle)收