7得票3回答
使用 epoll 和线程的套接字服务器

我正在尝试使用C语言为实时协作编辑器http://en.wikipedia.org/wiki/Collaborative_real-time_editor创建一个socket服务器,但我不知道哪种服务器架构最好。 一开始,我尝试使用select用于socket服务器,但后来我了解了epoll...

7得票3回答
使用epoll_wait和signalfd处理信号

我正在使用套接字和系统调用编写自己的“回声服务器”。我使用“epoll”来处理同时与多个不同客户端交互的情况,并且所有与客户端的操作都是非阻塞的。当服务器开启并且没有进行任何操作时,它会处于“epoll_wait”状态。现在,我想添加使用信号关闭服务器的可能性。例如,我在“bash终端”中启动...

14得票1回答
关于 epoll_ctl()

在使用 epoll_ctl() 函数时,我发现第三个参数“fd”是除了 epoll 文件描述符“epfd”之外的另一个文件描述符。我看到有这样一个示例:event.data.fd = sfd; //sfd is a fd for listening event.events = EPOLLIN...

79得票1回答
epoll、poll和threadpool有什么区别?

有人能解释一下 epoll、poll 和线程池之间的区别吗? 它们各自的优缺点是什么? 有哪些框架可以推荐? 有哪些简单/基础的教程可以推荐? 似乎 epoll 和 poll 是专属于 Linux 的... 有没有 Windows 系统的替代方案?

9得票2回答
使用不同的glibc版本

目前我使用的glibc不支持epoll,因此我安装了一个新的glibc来支持epoll。我有一个使用epoll的Python程序。 我尝试设置LD_LIBRARY_PATH export LD_LIBRARY_PATH="/home/glibc/lib:$LD_LIBRARY_PATH" ...

9得票2回答
我应该使用epoll还是在线程中使用阻塞接收?

我正在尝试编写一个可扩展的自定义 Web 服务器。 目前为止,主循环和请求解释器都是用 Cython 编写的。主循环接受连接并将套接字分配给进程池中的一个进程(必须是进程,线程不会因为 GIL 的存在而从多核硬件中获得任何好处)。 每个进程都有一个线程池。进程将套接字分配给一个线程。线程在...

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

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

7得票2回答
在Linux机器上对Netty 4.1进行性能调优

我正在使用Netty 4.1 Beta3设计我的服务器来构建一个消息应用程序,该服务器可以理解MQTT协议。 以下是我的MqttServer.java类,它设置了Netty服务器并将其绑定到特定端口。 EventLoopGroup bossPool=new NioEvent...

13得票3回答
当timeout为0时,poll()函数会立即检查文件描述符的状态并立即返回。

我正在查看 poll() 的文档,它告诉我在 timeout 参数传入正值和负值时的行为。但它没有说明如果 timeout 为 0 会发生什么。 你有什么想法吗? 查看 epoll_wait() 的文档,它告诉我当 timeout 值为 0 时,即使没有事件可用,它也会立即返回。那么可以安全...

19得票1回答
事件循环具有高的ksoftirqd负载;nginx没有,但执行相同的系统调用。为什么?

我编写了一些代码,其中有一个epoll事件循环,接受新连接并假装是一个http服务器。 发布的代码是绝对最小的...我删除了所有东西(包括所有错误检查)以使它尽可能地简短和简洁:#include <stdlib.h> #include <stdio.h> #includ...