Solaris上的epoll实现

本文介绍了Solaris 10 中两种高效的事件处理机制:/dev/poll 和 EventCompletionFramework(EventPort)。/dev/poll 是一种用于监控大量文件描述符活动的驱动程序。EventCompletionFramework 提供了一种更高级的事件驱动机制,支持多种类型的事件,如文件描述符、套接字等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

基本上现代的操作系统都有自己类似与Linuxepoll的实现,在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)

 

 

各个操作平台上都虽有Solarisepoll实现:

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值