11得票3回答
在C语言中使用工作线程的epoll IO

我正在编写一个小型服务器,它将从多个源接收数据并处理这些数据。这些源和接收到的数据都很重要,但 epoll 应该能够很好地处理。然而,所有接收到的数据都必须被解析并通过大量测试,这是耗时的,并且尽管使用 epoll 多路复用,仍会阻塞单个线程。基本上,模式应该像以下内容:IO 循环接收数据并将...

11得票1回答
重新审视“如何同时使用aio和epoll”

在如何在单个事件循环中同时使用AIO和epoll?的讨论后。 实际上,Linux中有2个“aio”API。 第一个是POSIX aio(aio_*函数族),包含在glibc和我认为由RedHat开发的libaio中,即io_*函数族。 第一个允许通过aio_sigevent aiocb成员...

10得票1回答
如何在Linux GPIO中使用boost::asio

我有一个使用boost::asio进行异步输入/输出的单线程Linux应用程序。现在我需要扩展这个应用程序以读取 /sys/class/gpio/gpioXX/value 上的GPIO输入。 是否可以使用 boost::asio::posix::stream_descriptor 监听边缘触...

10得票2回答
使用epoll_create1()相比于epoll_create()有哪些优势?

我正在重写一个多线程的Linux-2.6.32+应用程序,以将 select 替换为 epoll。 epoll_create1(2) 的 man 手册声明: 如果 flags 为 0,则除了删除已弃用的 size 参数之外,epoll_create1() 与 epoll_create...

10得票3回答
epoll性能

请有人帮忙回答有关epoll_wait的问题。 为了服务于约10万个活动套接字,使用多个调用epoll_wait的线程是否过度?或者仅创建一个线程执行epoll_wait就足够了? 当只有一个套接字准备好读取数据时,会有多少个线程从epoll_wait中唤醒?我的意思是,会发生2个或更多线...

10得票1回答
如果在边缘触发模式下调用epoll_ctl之前文件是可读的,那么随后的epoll_wait会立即返回吗?

epoll能否保证在使用epoll_ctl注册文件时,对于EPOLLIN和EPOLLET的第一次(或持续性)调用epoll_wait会立即返回,如果在epoll_ctl调用之前文件已经可读?通过我的测试程序的实验,答案似乎是肯定的。以下是几个示例以澄清我的问题: 假设我们已初始化了一个epo...

9得票3回答
epoll、kqueue、/dev/poll……扩展是用于PHP的。

有没有一种PHP扩展(稳定性不重要),可以直接使用epoll、kqueue、/dev/poll轮询函数,而不需要通过libevent或libev扩展?

9得票4回答
如何在单个事件循环中同时使用AIO和epoll?

如何将AIO和epoll结合在一个事件循环中? 谷歌搜索发现2002年和2003年有很多关于将它们统一的讨论,但不清楚是否真正实现了,或者是否可行。 是否有人使用eventfd为aio信号编写了一个epoll循环的自定义版本?

9得票2回答
epoll_event结构体中参数的意义(epoll)

我正在使用epoll_ctl()和epoll_wait()系统调用。 int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_event...

9得票2回答
使用epoll的线程和扩展模型的TCP服务器

我已经阅读了C10K文档以及许多有关扩展套接字服务器的论文。所有路线都指向以下几点: 避免“每个连接一个线程”的常见错误。 优先选择 epoll 而非 select。 同样,在 Unix 中使用传统异步 I/O 机制可能很难。 我的简单 TCP 服务器只是在专用端口上侦听客户端连接的侦...