epoll

    1熱度

    1回答

    網絡上有許多關於啓用了epoll/kqueue的GHC的舊信息。例如,Simple Servers wiki page上的代碼不再編譯。 有人可以提供一個基本的例子,說明如何使用這個功能與現代的GHC版本建立,例如,一個TCP服務器,只是在連接上響應「你好」?

    0熱度

    2回答

    我創建了epoll並註冊了一些嘗試連接到本地主機上關閉端口的非阻塞套接字。爲什麼epoll告訴我,我可以寫入這個套接字(它提供事件掩碼中包含EPOLLOUT的事件之一)?但是這個套接字不打開,如果我嘗試發送一些東西給我,我得到一個錯誤Connection refused。 另一個問題 - 什麼意思,即使EPOLLHUP?我認爲這是拒絕連接的事件。但是如何在這種情況下事件可以同時具有EPOLLHUP

    1熱度

    1回答

    我正在爲消息傳遞庫編寫IO核心,並考慮libuv與使用Linux上的原始epoll和Windows上的IOCP(以及最終其他人,solaris事件等)我喜歡可移植性libuv,我在看性能。 epoll和IOCP允許多個線程直接等待IO事件,內核執行調度。儘管我沒有任何數字,但比用戶空間調度更有效。 libuv(基於我的閱讀)有一個線程-USafe事件循環,但我可以實現一個領導者跟隨者線程池。我的意

    0熱度

    1回答

    epoll_ctl()與EPOLL_CTL_MOD可以產生ENOMEM或ENOSPC?

    1熱度

    1回答

    我有一個FD: socket(AF_INET6, SOCK_STREAM, ...) bind(fd, ...) listen(fd, ...) 而且我有一個epoll實例。我需要知道,我應該通過epoll_ctl訂閱哪些活動?我需要邊緣觸發模式。 我有這些標誌的ATM:EPOLLET | EPOLLIN 我應該訂閱EPOLLRDHUP,EPOLLOUT,EPOLLPRI?我需要處理EPO

    2熱度

    1回答

    如果一個線程(如X)正在等待epoll_wait(),另一個線程(比如Y)會調用epoll_ctl()來註冊對文件描述符9的興趣。先前在線程X中調用epoll_wait()能否返回線程Y添加的文件描述符9?對epoll_wait()的初始呼叫在任何時候都不會在中間返回。 現在我想比較一下,並詢問操作系統中另外兩個輪詢調用的相關問題。 poll()和kqueue 如果回答上述問題是真的,那麼有沒有辦

    1熱度

    1回答

    我使用timerfd和TFD_NONBLOCK選項。 該計時器被添加到epoll控制器,只有EPOLLIN事件集。 如果發生EPOLLIN,則在該定時器上使用read()。 99%的情況下,一切都很好。執行停止在epoll_wait,然後在定時器間隔後繼續。然而在系統負載很重的情況下,我幾次從read()收到EAGAIN。 這看起來像我收到EPOLLIN,但沒有什麼是可用的閱讀。

    0熱度

    1回答

    當使用epoll_wait時,它似乎「吃」寫入stdout的所有內容並延遲打印,直到epoll_wait收到事件後,儘管我在調用與epoll有關的任何內容之前嘗試打印(它甚至可能在我的主要方法的開始,它仍然不會被打印)。 不會顯示epoll_wait收到一個事件後,直到打印的例子: printf("This doesn't get printed. "); fprintf(stdout, "Th

    0熱度

    1回答

    我已經創建了一個套接字,將其設置爲非塊狀態,通過getaddrinfo獲得addr,連接,然後將其添加到EPOLL中,並通過EPOLLIN | EPOLLOUT標誌。 在我的下一次epoll_wait迭代時,它立即被觸發爲EPOLLOUT,但是當我嘗試寫\發送數據時,我得到一個EINPROGRESS(115)錯誤。 任何想法都會有用。由於 編輯0: 我使用LT epoll的 編輯1: 問題是無效的

    1熱度

    2回答

    是否有方法複製使用epoll_create創建的文件描述符,以便可以獨立修改副本(使用epoll_ctl添加/移除監視的文件描述符)。 E.g.我創建了一個epoll文件描述符A,它等待文件P和Q上的事件。我將它複製到epoll文件描述符B,並使B也等待文件R上的事件。調用epoll_wait(A)仍然只會等待P和Q。 在A上調用dup,或者需要使用epoll_create和epoll_ctl重新