Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 编写高性能服务器。哪种方法?_Unix_Asynchronous_Network Programming_Io - Fatal编程技术网

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
谢谢您的回答。

我会使用libevent

它使用目标平台上最好的可用机制,不管该机制是什么;因此,如果不做任何更改,您的程序将在BSD上使用
kqueue
,在Linux上使用
epoll(4)
,在其他可能存在的平台上使用其他最好的工具,而在旧平台上仍然会使用
select(2)
,而且它也可以在Windows上运行

神奇软件。:)

我会使用
它使用每个系统的最佳非阻塞IO

  • linux的e波尔
  • 类尼克斯队列
  • Windows上的重叠I/O
它还可以处理其他流(COM、文件)。

概念很简单,创建io_服务类和写句柄(类似事件)类来管理流。

我想我首先要弄清楚它应该提供什么服务,并获得高性能的定量定义。它支持多个CPU核吗?@Filipe,是的,但不是很透明;如果希望在多个内核中使用事件循环,则需要在必要时传递描述符。