Delphi 完成端口使用
来源:互联网 发布:人工智能的原理是什么? 编辑:程序博客网 时间:2024/05/21 08:52
Delphi 完成端口相关函数。
变量
FCompletionPort : THandle; //完成端口的相关信息const GOWORK = $FFFFEEEE;///开始工作 WORKBEAT = $FFFFEEDD;///线程心跳 GOSEND = $FFFFEECC;///发送数据 POOLPAUSE = $FFFFCCCC;///暂停 SHUTDOWN_FLAG = $FFFFFFFF;///线程关闭 HEARTBEAT_FLAG = $FFFFFFEE;///处理线程池的心跳维持
1、CreateIOCompletionPort 创建完成端口
FCompletionPort := CreateIOCompletionPort(INVALID_HANDLE_VALUE, 0, 0, 0);
参数:
__in HANDLE FileHandle,
__in_opt HANDLE ExistingCompletionPort,
__in ULONG_PTR CompletionKey,
__in DWORD NumberOfConcurrentThreads
返回值:
返回一个IOCP的句柄。若为NULL则创建失败,不为NULL则创建成功。
2、PostQueuedCompletionStatus 投递工作状态
nRet := PostQueuedCompletionStatus(FCompletionPort, 0, 0,Pointer(WORKBEAT));
BOOL PostQueuedCompletionStatus(
HANDLE CompletlonPort,
DW0RD dwNumberOfBytesTrlansferred,
DWORD dwCompletlonKey,
LPOVERLAPPED lpoverlapped,
);
CompletionPort:指定想向其发送一个完成数据包的完成端口对象。
dwNumberOfBytesTrlansferred:指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
dwCompletlonKey:指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
lpoverlapped:指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
3、 GetQueuedCompletionStatus 获取完成端口上的当前工作状态, 比如此时端口上完成的是什么操作,数据是什么等 ;有可能获取不成功根据返回值确定。
bRet := GetQueuedCompletionStatus(FCompletionPort, dwBytes,
DWORD(PHandleKey), POverlapped(PHandleData), INFINITE);
BOOL GetQueuedCompletionStatus(
HANDLE CompletionPort,
LPDWORD lpNumberOfBytes,
PULONG_PTR lpCompletionKey,
LPOVERLAPPED *lpOverlapped,
DWORD dwMilliseconds);
调用参数:
CompletionPort:指定的IOCP,该值由CreateIoCompletionPort函数创建。
lpnumberofbytes:一次完成后的I/O操作所传送数据的字节数。
lpcompletionkey:当文件I/O操作完成后,用于存放与之关联的CK。
lpoverlapped:为调用IOCP机制所引用的OVERLAPPED结构。
dwmilliseconds:用于指定调用者等待CP的时间。
返回值:
调用成功,则返回非零数值,相关数据存于lpNumberOfBytes、lpCompletionKey、lpoverlapped变量中。失败则返回零值。
4、CloseHandle 关闭完成端口
CloseHandle( FCompletionPort);
完成端口,使用其的主要目的是提高IO的吞吐量;
其实可以把完成端口看成系统维护的一个队列,操作系统把重叠IO操作完成的事件通知放到该队列里,由于是暴露 “操作完成”的事件通知,所以命名为“完成端口”(Completion Ports)。一个socket被创建后,可以在任何时刻和一个完成端口联系起来。
- Delphi 完成端口使用
- 完成端口使用总结
- 完成端口使用总结
- 完成端口使用总结
- 完成端口使用范例
- Winsock完成端口模型-Delphi代码
- Winsock完成端口模型-Delphi代码
- DELPHI下完成端口的应用
- ACE中使用完成端口.
- ACE中使用完成端口.
- ACE中使用完成端口
- ACE中使用完成端口.
- 小心使用IOCP完成端口
- 完成端口使用总结 (转)
- 简单使用ASIO完成端口
- 完成端口使用中的注意事项
- 使用Accept的完成端口
- DELPHI中完成端口(IOCP)的简单分析(1)
- Bootstrap Switch(开关控件)
- js 冒泡排序法
- 模仿网易新闻,点击举报按钮,弹出举报对话框
- 好用的dialog
- HM编码器代码阅读(39)——帧内预测(六)帧内预测之色度色度的操作
- Delphi 完成端口使用
- 01、mysql 简介
- 获得安卓手机的相关信息
- rabbitmq学习6:RPC
- App安全之网络传输安全
- Maven+Spring+Spring MVC+MyBatis+MySQL整合SSM框架
- 【OpenCV】9th-关于argc
- Ubuntu16.04版本搭建Tensorflow环境并启用GPU支持
- 周笔记(7/52) - DX11 - Tessellation/Hardware Instance