完成键与扩展 OVERLAPPED 结构

Posted

技术标签:

【中文标题】完成键与扩展 OVERLAPPED 结构【英文标题】:Completion key vs extending the OVERLAPPED structure 【发布时间】:2015-03-06 07:51:22 【问题描述】:

我不确定在处理与每个套接字关联的数据时应该采取什么方法。我应该使用完成键还是应该扩展OVERLAPPED 结构。

扩展OVERLAPPED 结构似乎是一种技巧,那么它比完成键有什么优势吗?

【问题讨论】:

【参考方案1】:

完成键是“每个连接”数据,也就是说,对于给定句柄上的所有操作,每次完成时它都是相同的,并且是链接到“文件”或“套接字”结构的好方法。

Overlapped 是“每个操作”数据,句柄上的每个并发操作必须使用唯一的重叠结构。这使得它非常适合保存每个操作的数据,例如“操作类型”和相关的内存(例如缓冲区)等。

“扩展重叠”不是黑客,而是应该使用设计的方式。

【讨论】:

以上是关于完成键与扩展 OVERLAPPED 结构的主要内容,如果未能解决你的问题,请参考以下文章

OVERLAPPED Win32 结构中的 hEvent 成员

Overlapped Model

OVERLAPPED结构与GetOverlappedResult函数

IO 完成端口和重叠管理

多线程环境中的扩展 OVERLAPPED 对象池:在何处以及如何有效地使用锁定

OVERLAPPED 结构