我是靠谱客的博主 高贵火车,最近开发中收集的这篇文章主要介绍Delphi 完成端口相关函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Delphi 完成端口相关函数
变量
FCompletionPort : THandle; //完成端口的相关信息
const
GOWORK = $FFFFEEEE;///开始工作
WORKBEAT = $FFFFEEDD;///线程心跳
GOSEND = $FFFFEECC;///发送数据
POOLPAUSE = $FFFFCCCC;///暂停
SHUTDOWN_FLAG = $FFFFFFFF;///线程关闭
HEARTBEAT_FLAG = $FFFFFFEE;///处理线程池的心跳维持
1
2
3
4
5
6
7
8
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 完成端口相关函数的全部内容,希望文章能够帮你解决Delphi 完成端口相关函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部