libevent库源码学习-evport(Event ports)(Solaris 10)

本文介绍了Solaris 10引入的Event Ports机制,包括port_create()、port_associate()、port_get()和port_getn()等API的使用,并通过示例展示了如何在事件驱动编程中利用这些接口处理多线程并发事件。
摘要由CSDN通过智能技术生成

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 关联。这种设计显然
    是为多线程程序而做的,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值