Unix 编写高性能服务器。哪种方法?
如果您需要编写一个高性能服务器,您将如何编写Unix 编写高性能服务器。哪种方法?,unix,asynchronous,network-programming,io,Unix,Asynchronous,Network Programming,Io,如果您需要编写一个高性能服务器,您将如何编写 使用异步阻塞epoll/kqueue? 但是这里如何处理阻塞系统调用epoll/kqueue呢?可能是主线程使用执行阻塞epoll/kqueue的工作线程 使用libevent?它是否与epoll/kqueue有所不同,因为它只封装了不同的机制,如select、epoll、kqueue等 或者使用异步非阻塞libaio使用异步阻塞epoll/kqueue?但它甚至支持套接字还是仅支持磁盘IO 谢谢您的回答。我会使用libevent 它使用目标平台
- 使用异步阻塞epoll/kqueue? 但是这里如何处理阻塞系统调用epoll/kqueue呢?可能是主线程使用执行阻塞epoll/kqueue的工作线程
- 使用libevent?它是否与epoll/kqueue有所不同,因为它只封装了不同的机制,如select、epoll、kqueue等
- 或者使用异步非阻塞libaio使用异步阻塞epoll/kqueue?但它甚至支持套接字还是仅支持磁盘IO
kqueue
,在Linux上使用epoll(4)
,在其他可能存在的平台上使用其他最好的工具,而在旧平台上仍然会使用select(2)
,而且它也可以在Windows上运行
神奇软件。:) 我会使用它使用每个系统的最佳非阻塞IO
- linux的e波尔
- 类尼克斯队列
- Windows上的重叠I/O
概念很简单,创建io_服务类和写句柄(类似事件)类来管理流。我想我首先要弄清楚它应该提供什么服务,并获得高性能的定量定义。它支持多个CPU核吗?@Filipe,是的,但不是很透明;如果希望在多个内核中使用事件循环,则需要在必要时传递描述符。