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重新