Solaris上的epoll实现

基本上现代的操作系统都有自己的类似与Linux中的epoll实现,在Solaris 10中除了传统的poll(2),我们可以选择使用/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
这里有一篇比较老的文章,大家也可以参考一下,里面有一些Benchmark数据:
 
不过这个机制,现在不推荐大家使用了,因为Solaris 10推出了更为出色的解决方案Event Completion Framework,也叫做Event Port, 而且/dev/poll/很可能在将来的Solaris版本中删除掉。这个Framework提供更方便的Event-Driven 实现机制,更加优秀的API,抽象化操作各种Event,包括File descriptors, Sockets, Timers, Pipes, Message Queues, Asynchronous I/O, 自定义Events。具体可以参考这份文章,里面还有针对其它操作系统各自epoll实现的比较:
Solaris Man Page:
-bash-3.00$ man port_create

Sun的工程师Dave Pacheco就这些Solaris上的Poll方式做过一些Benchmark的值,大家可以访问他的Blog ( http://blogs.sun.com/dap/entry/event_ports_and_performance)。
 
各个操作平台上都虽有Solaris的epoll实现,很可惜这些都未标准化。不过一些开源的软件已经就此做了一些努力,尝试对这些系统之间差异的函数做了封装,比如Apache的APR ( http://apr.apache.org/),它为UNIX/Linux程序抽象了底层平台各自的实现,包括Solaris的Event Completion Framework,BSD的Kqueue,Linux的epoll和poll。或者也可以参考类似的libevent( http://www.monkey.org/~provos/libevent/),使用BSD License。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值