boost :: asio不如您希望的那样友好线程-boost / asio / detail /
epoll_reactor.hpp中的epoll代码有很大的锁,这意味着一次只能有一个线程可以调用内核的epoll syscall
。对于很小的请求,这将带来所有不同(意味着您将仅看到单线程性能)。
请注意,这是boost :: asio使用Linux内核工具的方式的限制,不一定是Linux内核本身。使用边缘触发的事件时,epoll
syscall确实支持多个线程,但是正确处理(没有过多的锁定)可能会非常棘手。
顺便说一句,我一直在这方面做一些工作(将完全多线程的边缘触发epoll事件循环与用户预定的线程/光纤相结合),并在nginetd项目下提供了一些代码。



