iocp基础

简介: iocp基础

在看boost.asio源码时,看针对window平台的win_iocp_io_service中使用到iocp

接口

HANDLEWINAPICreateIoCompletionPort(
_In_HANDLEFileHandle,
_In_opt_HANDLEExistingCompletionPort,
_In_ULONG_PTRCompletionKey,
_In_DWORDNumberOfConcurrentThreads);

CreateIoCompletionPort创建输入/输出 (I/O) 完成端口并将其与指定的文件句柄相关联,或创建尚未与文件句柄关联的 I/O 完成端口,以便稍后关联

FileHandle:打开的文件句柄或 INVALID_HANDLE_VALUE,INVALID_HANDLE_VALUE表示该函数将创建 I/O 完成端口

ExistingCompletionPort :现有 I/O 完成端口或 NULL 的句柄,如果此参数指定现有的 I/O 完成端口,则函数将其与 FileHandle 参数指定的句柄相关联,如果此参数为 NULL,则该函数将创建新的 I/O 完成端口

CompletionKey:指定文件句柄的每个 I/O 完成数据包中包含的每句柄用户定义完成密钥,用来来帮助应用程序跟踪已完成的 I/O 操作

NumberOfConcurrentThreads:操作系统允许并发处理 I/O 完成端口的 I/O 完成数据包的最大线程数

BOOLWINAPIPostQueuedCompletionStatus(
_In_HANDLECompletionPort,
_In_DWORDdwNumberOfBytesTransferred,
_In_ULONG_PTRdwCompletionKey,
_In_opt_LPOVERLAPPEDlpOverlapped);

CompletionPort :I/O 完成数据包要发布到的 I/O 完成端口的句柄

dwNumberOfBytesTransferred:要通过 GetQueuedCompletionStatus 函数的 lpNumberOfBytesTransferred 参数返回的值

dwCompletionKey:要通过 GetQueuedCompletionStatus 函数的 lpCompletionKey 参数返回的值

lpOverlapped:要通过 GetQueuedCompletionStatus 函数的 lpOverlapped 参数返回的值

BOOLGetQueuedCompletionStatus(
  [in]  HANDLECompletionPort,
LPDWORDlpNumberOfBytesTransferred,
  [out] PULONG_PTRlpCompletionKey,
  [out] LPOVERLAPPED*lpOverlapped,
  [in]  DWORDdwMilliseconds);

尝试从指定的 I/O 完成端口取消对 I/O 完成数据包的排队。 如果没有完成数据包排队,函数将等待与完成端口关联的挂起 I/O 操作完成

CompletionPort:完成端口的句柄

lpNumberOfBytesTransferred:指向变量的指针,该变量接收在完成的 I/O 操作中传输的字节数

lpCompletionKey:指向变量的指针,该变量接收与 I/O 操作已完成的文件句柄关联的完成键值。 完成键是在对 CreateIoCompletionPort 的调用中指定的每个文件密钥

lpOverlapped:指向变量的指针,该变量接收在启动完成 I/O 操作时指定的 OVERLAPPED 结构的地址

dwMilliseconds:调用方愿意等待完成数据包出现在完成端口上的毫秒数。 如果完成数据包未在指定时间内显示,则该函数超时,返回 FALSE,并将 *lpOverlapped 设置为 NULL

目录
相关文章
|
编解码 算法 文件存储
浅谈动图文件格式 - GIF
介绍动图的文件格式,及其优劣
2670 0
浅谈动图文件格式 - GIF
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能技术的探讨
人工智能的概念,人工智能的发展,人工智能的各种学派,人工智能的应用领域
324 4
|
3月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
251 8
|
3月前
|
人工智能 自然语言处理 安全
如何让 AI 工具更懂你,更听话?
你是否也曾被AI“气到吐血”?明明说的是A,AI却给了B?别沮丧,2025年的AI也需要“正确沟通”。本文教你五大提示技巧:动态提示、多模态输入、Few-shot示例、任务分解与安全边界,让AI从“人工智障”变身“贴心助手”。学会“说AI的语言”,释放创造力,提升效率,开启智能生活新时代!
1137 0
|
3月前
|
人工智能
把“猜”变成“答”——让大模型更懂你 | AI小知识
如何让大语言模型更懂你?本文揭示大模型“答非所问”的背后原因,提供四步提问法:给背景、定目标、举例子、迭代追问。通过生活场景对比,展示如何将模糊提问转化为精准答案,帮助用户高效使用AI,提升沟通与工作效率。
153 0
|
5月前
|
Swift
陌陌小尾巴留微信号技术, 陌陌小尾巴插件下载, 陌陌动态挂微信号方法
本文分享了关于陌陌动态小尾巴技术的实现方法,适合用于营销推广。通过核心代码示例(Swift语言),展示了如何在应用内添加“平台内联系”按钮并跳转至指定页面。
|
传感器 机器学习/深度学习 人工智能
智能照明系统:技术、应用与未来趋势###
【10月更文挑战第15天】 智能照明,正以前所未有的速度革新着我们的世界。它不仅仅是灯泡亮度的简单调节,更是一种融合了先进科技与人性化设计的未来之光。本文将深入浅出地剖析智能照明系统的核心技术,探讨其在不同领域的广泛应用,并展望这一领域的未来发展蓝图。 ###
726 2
|
消息中间件 存储 安全
|
10月前
|
自然语言处理
Nature:人类亲吻难题彻底难倒LLM,所有大模型全部失败!LLM根本不会推理,只是工具
近期,《自然》杂志发表的研究显示,所有大型语言模型(LLM)在解释特定情境下人类亲吻行为时均失败。尽管LLM在语言处理和文本生成上表现出色,但在理解和推理复杂人类行为方面存在显著限制,表明其缺乏对人类情感、社会及文化背景的深入理解。专家认为LLM更像是工具而非智能体,虽在客户服务、内容创作等领域有价值,但在复杂推理和理解方面仍显不足。
234 37
|
9月前
|
人工智能 供应链 搜索推荐
如何降低酒店运营成本?管理者不可不知的优化策略
在竞争激烈的酒店行业,提升管理效率、优化服务质量和客户满意度至关重要。本文探讨如何通过精准市场定位、高效运营管理、智能化管理系统及数字化工具,实现精细化管理,提供个性化服务,有效处理客户反馈,以提升酒店竞争力和客户体验。未来,智能化与个性化将成为行业发展的重要趋势。
437 21