独来读网 发表于 2012-7-10 15:08:47

ACE_Asynch_Read_Dgram使用open及recv参数问题

2)ACE_Asynch_Read_Dgram:: open中参数const void *completion_key = 0是干嘛用的?
2)ACE_Asynch_Read_Dgram::recv中参数const void *act = 0是干嘛用的?

断点进去看了一下,还是云里雾里的?版主或哪个高手帮我说明一下.

以我看完后的理解:completion_key是用来判断连接是否连接上,可以调用相应的函数来获取completion_key参数是否已传入,若传入到ACE_Asynch_Read_Dgram中,表示open成功执行,若没有传入,或传入的参数与ACE_Asynch_Read_Dgram中不一样,表示open没有成功执行. ---------也不知道这样理解对不对?

而const void *act 好像被ACE_UNUSED_ARG取消定义了,这个参数就一点都不理解了.


忘各位兄弟姐妹帮我说明一下这两个参数的含义及作用.

yunh 发表于 2014-2-21 14:52:33

    Windows上的IOCP机制允许在绑定异步读写IO句柄时指定一个cookie式的completion_key,用户可以用来装载一些额外的信息,其它平台上并不支持,所以不具有可移植性。
    ACE自己也实现了类似的机制,允许用户为每个异步IO操作绑定一个cookie式的act,用户可以用它来存储一些额外的信息,比起Windows原生的功能,更加强大,因为可以具体到每一个异步操作,而不仅仅是每一个异步IO句柄。而且是ACE自己实现的,所以在所有平台上都可移植。

freeeyes 发表于 2014-2-21 15:13:10

yunh对ace了解的很深入啊

yunh 发表于 2014-2-21 15:28:17

过奖,到这儿才发现高手如林

freeeyes 发表于 2014-2-21 16:16:59

yunh 发表于 2014-2-21 15:28
过奖,到这儿才发现高手如林

有兴趣加群 260862613 这个群是我基于ace构建的开源服务器框架讨论群。

sevencat 发表于 2014-2-24 22:10:23

一个是per connection数据,一个是per io operation数据。

yunh 发表于 2014-2-25 15:41:34

freeeyes 发表于 2014-2-21 16:16
有兴趣加群 260862613 这个群是我基于ace构建的开源服务器框架讨论群。

好的,已发送请求
页: [1]
查看完整版本: ACE_Asynch_Read_Dgram使用open及recv参数问题