cost 329 ms
使用Epoll Edge Triggered時re-arming EPOLL的時機問題及相關問題

[英]Question on the timing of re-arming EPOLL and related questions when using Epoll Edge Triggered

在使用邊緣觸發和 EPOLLONESHOT 時,我對 EPOLL 有一些疑問。 下面列出了簡化的語句序列。 實際上多個文件由一個 Epoll Fd 監控,一個集合通過一個特定的線程進行管理。 所使用的變量名稱不言自明,當然是設置的。 為簡潔起見,省略了該部分: } 問題: 使用EPO ...

Epoll零recv()和負(EAGAIN)send()

[英]Epoll zero recv() and negative(EAGAIN) send()

過去幾天,我在epoll方面苦苦掙扎,現在處在茫茫荒野之中;) 互聯網上有很多信息,很明顯,系統人中有很多信息,但是我可能服用了過量葯物,有些困惑。 在我的服務器應用程序(后端到nginx)中,我正在等待ET模式下來自客戶端的數據: event_template.events = ...

TCP:EPOLLHUP何時生成?

[英]TCP: When is EPOLLHUP generated?

還看到這個問題 ,截至目前尚未得到答復。 關於EPOLLHUP存在很多困惑,即使在man和Kernel docs中也是如此。 人們似乎相信在輪詢本地為寫入的描述符時返回它,即shutdown(SHUT_WR) ,即在對等端引起EPOLLRDHUP的同一調用。 但是,這是不正確的,在我的 ...

EPOLLET行為不正確?

[英]Incorrect EPOLLET behavior?

請考慮以下程序: 最后一個斷言失敗。 由於我們從未從epoll讀取EPOLLET ,因此我期望最后一個epoll_wait返回0。相反,我得到1。 這是為什么? 來自Ubuntu 16.10的Kernel 4.13.0-39-generic。 ...

嵌套 EPOLL FD

[英]Nested EPOLL FD

我在網上找到的關於嵌套 FD 行為的信息非常有限。 假設 EPOLL FD1 在 EPOLL FD2 和 FD3 之間共享。 那么如果 epoll FD1 得到一個事件會發生什么 如果在沒有 epoll_exclusive 標志的情況下添加它,它是否會同時向 FD2 和 Fd3 引發事件。 ...

從Python阻止在GPIO上讀取:如何使用epoll()和select進行阻止

[英]Blocking read on GPIO from Python: How to block using epoll() and select.EPOLLET

我正在嘗試在嵌入式系統(ARM內核)上從Python訪問GPIO,該嵌入式系統運行的是使用Buildroot(內核4.1.15)構建的linux。 我希望我的代碼阻塞以等待GPIO2上的引腳更改(即,我不想通過重復調用“ read”來輪詢該引腳)。 我正在嘗試在邊緣觸發模式下使用“ ep ...

為什么EPOLLOUT會改變EPOLLIN的處理方式?

[英]Why EPOLLOUT changes how EPOLLIN is handled?

關於事件是否合並的文檔尚不清楚,我的測試顯示它們在某些情況下但並非總是如此。 考慮man 7 epoll : 因為即使使用邊緣觸發的epoll,在收到多個數據塊時也可以生成多個事件,調用者可以選擇指定EPOLLONESHOT標志...... 以及問答部分: Q7 ...

C 語言中帶有 epoll 和 EPOLLET 的多線程 TCP 偵聽器

[英]Multithreaded TCP listener with epoll and EPOLLET in C

我想使用 epoll 和EPOLLET編寫一個多線程 TCP 偵聽器。 我已經看到有幾種可能性: 每個線程都有自己的 epoll fd,使用SO_REUSEPORT (但僅限 Linux 內核 3.9)執行bind() ) 並處理自己的連接。 在這種情況下不需要EPOLLONESHOT ,因 ...

是否在不等待epoll_waiting時監視epoll事件

[英]Are epoll events being watched when not epoll_waiting

我對基於事件的編程很陌生。 我正在嘗試使用epoll的edge-mode ,它顯然只發出已准備好進行讀/寫的信號(與level-mode相對,它發出所有准備好的文件的信號,無論是否已經准備好或剛剛准備就緒) 。 我不清楚的是: 在邊緣模式下,我是否被告知當我沒有epoll_wait in ...

重載epoll線程的文件描述符是否安全?

[英]Is rearming file descriptors for epoll thread safe?

從這個問題中我知道可以在另一個線程阻塞epoll_wait(2)同時調用epoll_ctl(2) epoll_wait(2) 。 我仍然有一個問題。 當將epoll與EPOLLONESHOT標志一起使用時,只會觸發一個事件,並且必須使用epoll_ctl(2)重新設置fd。 這是必要的 ...

多線程epoll服務器:喚醒在同一epoll fd上休眠的N個線程

[英]multithreaded epoll server: wake up N threads sleeping on the same epoll fd

我有一個多線程epoll服務器。 我創建了一個epoll fd,然后我將讓X個線程epoll_wait()休眠狀態,並使用epoll_wait()等待來自該SAME epoll fd的任何事件。 現在我的問題是:如何喚醒N> 1 && N <X的N個線程? ...

epoll - EPOLLET 容易出現競爭條件嗎?

[英]epoll - is EPOLLET prone to race conditions?

進程 B 在管道上進行 epoll (EPOLLIN|EPOLLET)。 進程 A 在管道中寫入 1KiB。 進程 B 喚醒。 進程 B 從管道中讀取 1KiB。 進程 A 在管道中寫入 1KiB。 進程 B 在管道上進行 epoll。 管道的狀態在 epoll 期間不會 ...

最后一次read(2)調用的Epoll TCP邊緣觸發的必要性

[英]Epoll TCP edge-triggered necessity of last read(2) call

給定非阻塞TCP套接字,如果調用 返回一個值< bufLen ,然后等待邊緣觸發的EPOLLIN事件是否安全? 還是我必須再次調用read以確保它為零或EAGAIN? 在我的測試中,刪除最后一個調用時,一切都保持正常,我只想知道是否可以在任何地方或Linux源代碼保證它,以 ...

epoll_wait()> 1只有1個套接字和1個事件 - EPOLLIN?

[英]Can epoll_wait() > 1 with only 1 socket and 1 event — EPOLLIN?

假設我是epoll_create1()並且只對EPOLLIN |感興趣 EPOLLET適用於1個插座。 我是否可能為該套接字獲取epoll_wait()> 1(假設超時= -1)並且事件是EPOLLIN? 或者,即使有多個數據包,epoll_wait()也會返回1(假設我在e ...

具有邊沿觸發,一發多線程的epoll

[英]epoll with edge triggering, one shot and multithreading

這是關於此答案的一個問題: https ://stackoverflow.com/a/14241095/2332808(會對此進行評論,但顯然無法創建新帳戶,對此感到抱歉。很難找到有關epollet /多線程的資源。 ) 建議使用epoll如下: epoll_ctl()激活通知( ...

epoll(EPOLLET)取決於讀取字節數?

[英]epoll (EPOLLET) depends on count of read bytes?

我在邊緣觸發模式下使用epoll。 為了避免飢餓,代碼從一個套接字一次讀取MAX_FREAD_LENGTH個字節。 之后組裝片段直到EOL發生。 我注意到當MAX_FREAD_LENGTH很小時epoll卡住了。 我認為它適用於任何大小的讀取塊。 它適用於512字節,但有時掛起(意味着 ...

C:使用epoll ET的數據轉發服務器填充發送緩沖區

[英]C: Data forwarding server using epoll ET fills the send buffer

我有以下情況。 我的服務器從遠程服務器(fd_server)接收數據,並將其轉發到客戶端(fd_client)。 我正在使用邊緣觸發的epoll,以便可以處理多個客戶端和多個服務器連接。 程序: 客戶端連接到服務器。 我的服務器連接到遠程服務器並請求數據。 遠 ...

使用邊緣觸發的 epoll,我應該循環發送嗎?

[英]Using edge triggered epoll, should I loop over send?

我正在使用 epoll 編寫媒體服務器。 fds 都設置為非阻塞,我正在使用邊緣觸發事件。 我知道對於 EPOLLIN,我需要循環讀取 fd,直到返回 EAGAIN。 但是寫作呢? 當我想寫數據時,我將數據排隊並在 fd 上設置 EPOLLOUT|EPOLLIN|EPOLLET。 當 EPOLL ...


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