博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi-IOCP学习笔记<二>====IOCP基本函数介绍和理解
阅读量:5010 次
发布时间:2019-06-12

本文共 924 字,大约阅读时间需要 3 分钟。

经过研究代码,觉得有几个函数必须要清楚原理。才能理解代码,清楚流程。

 

异步模式:类似form.show();

阻塞模式:类似form.showModal();

 

WSAAccept;

当客户端有连接请求的时候,WSAAccept函数会新创建一个套接字cSocket。

其他的参数可以查看MSDN,和google。

需要说明的一点是这个函数不是异步的,是阻塞模式。

 

WSARecv;

收取socket的数据

这个函数是异步模式,执行后马上返回。

数据接收到后,GetQueuedCompletionStatus,会返回

 

 

GetQueuedCompletionStatus:

实现从指定的IOCP请求队列中获取请求。

当队列为空时,对此函数的调用将被阻塞。

当队列不为空时,被阻塞的线程将以后进先出(LIFO)顺序被请求出去.

 

 

PostQueuedCompletionStatus:

CSDN上面的解释

Posts an I/O completion packet to an I/O completion port.

向IO完成端口Post一个I/O完成数据包。

//也有一个blogs上面是这样解释

>>>PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.

出自:

>>>>我做个一个这样的测试在Accept连接后,执行PostQueuedCompletionStatus,

PostQueuedCompletionStatus(lvIOPort, 0, 0, nil);

开启有7个工作线程.只有一个线程的GetQueuedCompletionStatus,有返回值。

>>>>>>

我的理解是:

想IO端口中发送一个数据包到队列中.会触发一个GetQueuedCompletionStatus有返回值,并不会所有的线程中的GetQueuedCompletionStatus有返回值。

 

下一节,研究,这几个函数的实际使用

转载于:https://www.cnblogs.com/DKSoft/archive/2013/04/17/3026089.html

你可能感兴趣的文章
ES的Zen发现机制
查看>>
【hibernate】1、Hibernate的一个注解 @Transient
查看>>
HihoCoder 1877 - Approximate Matching
查看>>
Elastic Search 语法总结
查看>>
py自动化之环境配置
查看>>
Winodws SNMP服务安装和配置(Windows 2003 & 2008 R2)
查看>>
红黑树-想说爱你不容易
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
LeetCode-Binary Tree Level Order Traversal
查看>>
COM组件开发实践
查看>>
yii2 源码分析1从入口开始
查看>>
浅谈网站推广
查看>>
Away3D基础之摄像机
查看>>
Leetcode 128. Longest Consecutive Sequence
查看>>
程序员必须知道的几个Git代码托管平台
查看>>
导电塑料入梦来
查看>>
C# 线程手册 第五章 扩展多线程应用程序 - 什么是线程池
查看>>
笔记1126ASP.NET面试题(转)
查看>>
考研路茫茫--单词情结 - HDU 2243(AC自动机+矩阵乘法)
查看>>
HTTP运行期与页面执行模型
查看>>