首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

Solaris下的epoll实现

2012-07-03 
Solaris上的epoll实现??基本上现代的操作系统都有自己类似与Linux中epoll的实现,在Solaris 10中我们可以选

Solaris上的epoll实现

?

?

基本上现代的操作系统都有自己类似与Linux中epoll的实现,在Solaris 10中我们可以选择使用/dev/poll或者Event Completion Framework。

?

/dev/poll 或者叫做poll(7d)是一个特别的Driver,可以让你高效的poll大量的File Descriptor。因为/dev/poll将整个poll动作在内核中完成,具体使用可以查看Solaris Man Page,里面有一些实际的代码可供参考。
-bash-3.00$ man -s 7d poll

或者访问docs.sun.com: http://docs.sun.com/app/docs/doc/816-5177/6mbbc4g9q?l=zh&a=view

这里有一篇比较老的文章,大家也可以参考一下,里面有一些Benchmark数据:

http://developers.sun.com/solaris/articles/polling_efficient.html

?

?

不过这个机制,现在不推荐大家使用了,因为Solaris 10推出了更为出色的解决方案Event Completion Framework,也叫做Event Port。这个Framework提供更方便的Event-Driven 实现机制,更加优秀的API,抽象化操作各种Event,包括File descriptors, Sockets, Timers, Pipes, Message Queues, Asynchronous I/O, 自定义Events。具体可以参考这份文章,里面还有针对其它操作系统各自epoll实现的比较:

http://developers.sun.com/solaris/articles/event_completion.html

Solaris Man Page:

-bash-3.00$ man port_create

docs.sun.com: http://docs.sun.com/app/docs/doc/816-5168/6mbb3hris?l=zh&a=view


Sun

的工程师Dave Pacheco就这些Solaris上的Poll方式做过一些Benchmark的值,大家可以访问他的Blog (http://blogs.sun.com/dap/entry/event_ports_and_performance)。

?

?

各个操作平台上都虽有Solaris的epoll实现:

?

各自epoll实现,很可惜这个方式还未标准化。不过一些开源的软件已经就此做了一些努力,尝试对这些系统之间差异的函数做了封装,比如Apache的APR (http://apr.apache.org/),它为UNIX/Linux程序抽象了底层平台各自的实现,包括Solaris的Event Completion Framework,BSD的Kqueue,Linux的epoll和poll。或者也可以参考使用BSD License的libevent(http://www.monkey.org/~provos/libevent/)。

热点排行