Solaris上的epoll实现
2007-04-02 22:35
246 查看
基本上现代的操作系统都有自己的类似与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
或者访问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,而且/dev/poll/很可能在将来的Solaris版本中删除掉。这个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实现,很可惜这些都未标准化。不过一些开源的软件已经就此做了一些努力,尝试对这些系统之间差异的函数做了封装,比如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。
/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,而且/dev/poll/很可能在将来的Solaris版本中删除掉。这个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实现,很可惜这些都未标准化。不过一些开源的软件已经就此做了一些努力,尝试对这些系统之间差异的函数做了封装,比如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。
相关文章推荐
- epoll定时器实现系列文章:linux timerfd系列函数总结,有firecat注释
- poll&&epoll实现分析(一)—poll实现 http://blog.csdn.net/fengwen168168/article/details/48091793
- Linux下利用epoll实现两台机器之间的UDP传输丢包统计
- 彻底学会使用epoll(一)——ET模式实现分析
- select,poll,epoll实现分析—结合内核源代码
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型
- linux kernel中epoll的设计和实现
- Linux 下使用epoll实现转发服务器的小DEMO
- Linux下基于EPOLL 模型,实现用户登录,客户端采用QT
- 源码剖析Linux epoll实现机制及Linux上惊群
- Linux + C + Epoll实现高并发服务器(线程池 + 数据库连接池)
- epoll源码实现分析
- linux c 利用epoll +thread群发消息服务器的简易实现
- Solaris10中sqlplus实现上下键查找历史命令
- linux下epoll实现机制
- [基于Epoll内置Leader-Follower服务端实现, 已可达50万echo qps(全新支持Lua啦)] - C/C++ - ChinaUnix.net -
- epoll实现高并发聊天室
- linux下epoll系统调用实现I/O复用
- select,poll,epoll实现分析—结合内核源代码
- Linux通过改进的epoll实现对不同超时时间的数据包重传