Solaris 10 的新增加的特性。
一.API
1. port_create()
原型:int port_create(void);
port_create() 创建一个 Event ports 队列,返回一个文件描述符作为该
Event port 的代表。
相似:kqueue(),epoll_create()
2. port_associate()
原型:int port_associate(int port, int source, uintptr_t object,
int events, void *user);
port_associate() 将某一个对象的特定 event 与 Event port 相关联。当
source 为 PORT_SOURCE_FD 时,object 就是文件描述符。events 可以参考
poll(2) 的。user 是一个用户自定义的指针,与该 object 相关的。在
kqueue(2) 和 epoll(4) 也提供了类似的用户自定义指针。在前面的 echo
server 例子中,传入了一个函数指针给 user,这样在 main() 的事件处理
主循环中,代码就可以写得非常简洁。
需要注意的是,当用 port_get() 取得某个 object 的 event 之后,这个
object 与 port 也就不再相关联了。如果想继续取得这个 object 的 event,
必须再次调用 port_associate() 将 object 与 port 关联。这种设计显然
是为多线程程序而做的,
libevent库源码学习-evport(Event ports)(Solaris 10)
最新推荐文章于 2023-02-08 22:41:30 发布
本文介绍了Solaris 10引入的Event Ports机制,包括port_create()、port_associate()、port_get()和port_getn()等API的使用,并通过示例展示了如何在事件驱动编程中利用这些接口处理多线程并发事件。
摘要由CSDN通过智能技术生成