问题标签 [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.
c - epoll_wait 的替代方案,它不等待文件描述符?
我有一个程序,它使用 timerfd_create 创建一个计时器(计时器到期时,设置一个文件描述符)。
问题是,我epoll_wait
用来等待文件描述符,然后使用fd=revent.data.fd
and检查过期fd=timer_fd
(参见下面的程序)。
但是,如果我这样做,会epoll_wait
阻止我的程序直到计时器到期,并且我不希望这种情况发生..我希望程序运行,并且我会定期检查计时器是否到期。有什么替代方法吗?
请看下面的程序。
}
boost - epoll重新注册:文件存在
当我尝试在断开连接后立即重新连接客户端时,我在服务器端(带有 fork() 的多进程服务器)发生了这个异常。我正在使用boost,但现在我不明白引发异常的确切指令,因为多进程中的调试不仅仅适合我。
但是我想在这一点上:
有任何想法吗?
更新
我用的是1.52版本的asio,所以支持fork,异常在子进程。它发生在第三次重新连接尝试时,所以如果
- 连接客户端
- 断开连接(由 ctrl +c 强制)
- 重新连接(所有工作)
- 断开
- 重新连接此客户端(或另一个客户端)会引发异常..
这是代码:
epoll - libevent和epoll,哪个效率更高?
我认为这是两个最好的事件处理库。
这两个都有很多用户,但哪个更好?
linux - epoll 的实现有 rfc 吗?
许多网络协议都有自己的 rfc(request for comment),
像 http/1.1 的这个:
http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf
网上有epoll
自己的rfc吗?
asynchronous - 多线程彗星服务器库
我正在寻找多线程彗星服务器库 - 我需要的是在线程池(4-8 个线程)上工作的异步 io(使用 epoll)。如果 Tornado 是多线程的,它将是理想的。
为什么是多线程?我需要处理和提供可能来自每个连接的用户的数据——它可以使用数据库在龙卷风实例之间同步,但即使是 nosql 也会太慢——几乎每个请求都会以数据库写入/更新结束——即使使用异步司机不是个好主意。我可以将所有内容存储在本地易失性内存中,因此它可以非常快 - 但必须在单个进程上运行以避免进程间通信。我不需要扩展——一个盒子就足够了——但它必须很快。一些数据将存储在 MongoDB 中 - 但 mongo 查询的数量将是正常请求的 5%。
重要的是 - 信号量(和其他更高级别的方法)对我来说不是火箭科学,所以我不害怕同步。
要求:
- 异步 io
- 非阻塞
- 数千个并发连接
- 快速地
- 基本 HTTP 功能(GET、POST、cookies)
- 异步处理请求的能力(做某事,带回调的异步调用(例如数据库查询),处理回调,返回数据)
- 线程池
- C++/Java/Python
- 简单轻便
也有异步 mongo 驱动程序会很好
我研究了 Boost ASIO,它似乎能够做我需要的事情——但我想专注于应用程序——而不是编写 http 请求处理。
我读过Tornado(看起来很理想,但它是单线程的),Simple(不确定它是否可以异步处理请求并在异步调用后返回数据),BOOST ASIO(非常好,但太低级)
c - epoll 消息服务器
我想使用 epoll 创建一个消息服务器。几个设备将连接到服务器并交换简单的文本消息。我在这方面没有太多经验,如果你们能提供与此相关的任何参考资料或教程,我将不胜感激。
我想与 C 合作。提前致谢。
李
select - epoll VS 选择
我已经阅读了几本网络书籍,以了解 epoll 和 select 之间的区别,但它们仅略微涵盖了这些概念。如果你们能向我提供细节上的关键差异,我将不胜感激。
提前致谢
c - 一个 nginx 工作进程是同时处理两个请求还是一个一个处理?
过滤器链最酷的部分是每个过滤器不会等待前一个过滤器完成;它可以在生成前一个过滤器的输出时对其进行处理,有点像 Unix 管道。(从这里)
我猜上面是在每个过滤器末尾谈论这样的代码:
也就是,nginx 将过滤器一一链接起来。但是由于它在每个过滤器的末尾,它必须等到当前过滤器完成。我不明白 nginx 是如何做到的each filter doesn't wait for the previous filter to finish
。
所以上面是关于nginx过滤器的并发,接下来是关于nginx请求处理的并发:
我们知道 nginxepoll
用来处理请求:
使用上面的代码,我不认为 nginx 可以同时处理两个请求,它只能一个一个地完成(每个都handler
足够快地完成它的工作,所以下一个请求很快就会得到处理),对吧?
或者我有什么遗漏吗?
linux - epoll 会通知所有在同一个 fd 上监听的进程吗?
我有多个子进程fork()
在同一个 fd 集上监听。
是全部通知还是只通知其中一个?
c++ - epoll 对 udp 客户端来说是个坏主意吗?
我已经使用 epoll 创建了一个 linux 服务器。我意识到客户端将使用 udp 数据包......
我刚刚从我的代码中删除了“听”部分,它似乎工作正常。但我想知道我可能面临的任何隐藏问题或问题。
另外,如果客户端发送 udp 数据包,使用 epoll 作为服务器是不是一个坏主意?