问题标签 [epoll]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1056 浏览

python - 如何使用 Tornado 提供(永无止境的)系统调用

例如,假设我有这个代码:

如何将此类的输出提供给浏览器?由于没有停止点,我不知道在哪里与轮询循环挂钩。不仅如此,由于打印行有效(我看到终端上转储的行),浏览器没有得到完全相同的行,见下文:

0 投票
1 回答
219 浏览

linux - epoll并一次设置多个兴趣

有趣的是,除了 2004 年的一些旧幻灯片,我找不到任何关于此的讨论。

恕我直言,当前的epoll()使用方案正在乞求诸如epoll_ctlv()通话之类的东西。虽然这个调用对于典型的 HTTP Web 服务器没有意义,但它在我们同时向多个客户端发送相同数据的游戏服务器中确实有意义。epoll_ctl()鉴于已经存在的事实,这似乎并不难实现。我们有什么理由不拥有这个功能吗?也许没有优化窗口,有吗?

0 投票
2 回答
7745 浏览

linux - linux - 无法让 eventfd 与 epoll 一起使用

我正在编写一个基于 epoll 的简单服务器类。为了唤醒epoll_wait(),我决定使用 eventfd。据说它更适合简单的事件通信,我同意这一点。所以我创建了我的活动并对其进行了关注:

稍后在消息等待循环中,在一个单独的线程上:

当然,停止服务器的代码是:

由于我无法解释的原因,我无法通过写信来唤醒epoll_wait()事件。最终,这在一些调试会话中起作用。

这是我的解决方法:知道EPOLLOUT每次 fd 可用于写入时都会触发一个事件,我将停止代码更改为

现在它可以工作了,但不应该这样。

我不相信这应该有什么困难。我做错了什么?

谢谢

0 投票
2 回答
3113 浏览

epoll - 为什么 ePoll 的规模比 Poll 更好?

简短的问题,但对我来说很难理解。

为什么 ePoll 的规模比 Poll 更好?

0 投票
5 回答
10502 浏览

c++ - 使用epoll_wait时如何正确读取数据

我正在尝试将使用 IOCP 的现有 Windows C++ 代码移植到 Linux。决定使用epoll_wait来实现高并发后,我已经面临一个理论上的问题,即我们何时尝试处理接收到的数据。

想象一下两个线程调用epoll_wait,并且接收到两条结果消息,这样 Linux 就会解除对第一个线程的阻塞,很快就会解除第二个线程的阻塞。

例子 :

这种情况可以想象吗?即它可以发生吗?

有没有办法防止它,以避免在接收/处理代码中实现同步?

0 投票
2 回答
8988 浏览

c - epoll_ctl:不允许操作错误-c程序

编译此代码时,没有错误。gcc -o epoll epoo.c

但是当我尝试执行程序“epoll”时,我收到了错误消息

epoll_ctl:不允许操作。

我试图将“doc”文件的模式更改为 0777,但它不起作用。

问题是什么?谢谢 :)

0 投票
3 回答
4710 浏览

c++ - 使用单个文件描述符,select,poll和epoll和...之间是否有任何性能差异?

标题真的说明了一切。

and ... 表示还包括 pselect 和 ppoll..

我正在处理的服务器项目基本上是由多个线程构成的。每个线程处理一个或多个会话。所有线程都是相同的。该协议负责哪个线程将主持会话。

我正在使用一个内部套接字类来包装东西。兴趣点是调用 poll (linux) 或 select (windows) 的 checkread 调用。

总之,每个线程当前在单个套接字上调用 poll。据我所知,只有当这个线程正在查看多个套接字时,使用 epoll 才会有好处,比如你会得到一个 HTTP 服务器。在我的情况下,这不是我正在做的事情。并且该类一次只处理一个套接字。

在 epoll 的手册页中有一些关于边缘和电平触发的简短讨论。我不太确定这意味着什么。在套接字类中,我在代码的 windows 部分看到了一个优化,它使用 ioctlsocket 和 FIONREAD 快捷方式选择调用,以检查是否有任何数据。想知道即使在调用时没有完整的 UDP 数据包到达,它是否会返回 > 0。这就是epoll中的边缘触发吗?

在一些基本测试中,我也发现使用 select 和 poll 之间没有明显区别。

我可以看到使用 ppoll 可能会有好处,尽管由于超时精度更高。有什么想法吗?

是的,我正在尝试优化接收大量数据的会话的吞吐量。服务器比 CPU 更受网络和磁盘的限制。

0 投票
4 回答
16693 浏览

linux - 事件驱动和异步有什么区别?在 epoll 和 AIO 之间?

事件驱动和异步经常被用作同义词。两者之间有什么区别吗?

epoll另外,和 和有什么区别aio?它们是如何组合在一起的?

最后,我多次读到 Linux 中的 AIO 严重损坏。它到底是怎么破的?

谢谢。

0 投票
1 回答
2136 浏览

linux - linux中多线程epoll的一个问题

我有一个使用 epoll(7) 的多线程 linux 程序。epoll(7) 手册页说,当它的一个 fd 被关闭时,这个 fd 将自动从 epoll 集中删除。我的问题是,如果 epoll 集的 fd 在一个线程中关闭,而 epoll 集在另一个线程中同时轮询而没有同步,该怎么办。程序会损坏还是内核会自动同步此访问?

谢谢

0 投票
1 回答
1972 浏览

javascript - 如何解决 process.nextTick 错误?

我正在使用 node.js 构建 TCP 服务器,但出现以下错误。如何解决这个问题?