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取消定义了,这个参数就一点都不理解了.
忘各位兄弟姐妹帮我说明一下这两个参数的含义及作用.
Windows上的IOCP机制允许在绑定异步读写IO句柄时指定一个cookie式的completion_key,用户可以用来装载一些额外的信息,其它平台上并不支持,所以不具有可移植性。
ACE自己也实现了类似的机制,允许用户为每个异步IO操作绑定一个cookie式的act,用户可以用它来存储一些额外的信息,比起Windows原生的功能,更加强大,因为可以具体到每一个异步操作,而不仅仅是每一个异步IO句柄。而且是ACE自己实现的,所以在所有平台上都可移植。 yunh对ace了解的很深入啊 过奖,到这儿才发现高手如林 yunh 发表于 2014-2-21 15:28
过奖,到这儿才发现高手如林
有兴趣加群 260862613 这个群是我基于ace构建的开源服务器框架讨论群。 一个是per connection数据,一个是per io operation数据。 freeeyes 发表于 2014-2-21 16:16
有兴趣加群 260862613 这个群是我基于ace构建的开源服务器框架讨论群。
好的,已发送请求
页:
[1]