Delphi-IOCP学习笔记<二>====IOCP基本函数介绍和理解
2013-04-17 13:41
781 查看
经过研究代码,觉得有几个函数必须要清楚原理。才能理解代码,清楚流程。
异步模式:类似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函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.
出自:http://hi.baidu.com/drunkdream/item/b4b4b649dd6c9b0fc01613ac
>>>>我做个一个这样的测试在Accept连接后,执行PostQueuedCompletionStatus,
PostQueuedCompletionStatus(lvIOPort, 0, 0, nil);
开启有7个工作线程.只有一个线程的GetQueuedCompletionStatus,有返回值。
>>>>>>
我的理解是:
想IO端口中发送一个数据包到队列中.会触发一个GetQueuedCompletionStatus有返回值,并不会所有的线程中的GetQueuedCompletionStatus有返回值。
下一节,研究,这几个函数的实际使用
异步模式:类似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函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.
出自:http://hi.baidu.com/drunkdream/item/b4b4b649dd6c9b0fc01613ac
>>>>我做个一个这样的测试在Accept连接后,执行PostQueuedCompletionStatus,
PostQueuedCompletionStatus(lvIOPort, 0, 0, nil);
开启有7个工作线程.只有一个线程的GetQueuedCompletionStatus,有返回值。
>>>>>>
我的理解是:
想IO端口中发送一个数据包到队列中.会触发一个GetQueuedCompletionStatus有返回值,并不会所有的线程中的GetQueuedCompletionStatus有返回值。
下一节,研究,这几个函数的实际使用
相关文章推荐
- PostgreSQL学习笔记6之函数和操作符<二>
- Delphi-IOCP学习笔记<五>===测试IOCP工作线程处理队列顺序
- Delphi-IOCP学习笔记<一>====从零开始学习IOCP
- Delphi-IOCP学习笔记<八>=======服务端的数据发送和JSonStreamObject的编码器
- Delphi-IOCP学习笔记<九>======性能测试和IOCP源码下载<5000个连接数>
- Delphi-IOCP学习笔记<四>===小结<IOCP的简单例子>
- Delphi-IOCP学习笔记<九>======性能测试和IOCP源码下载<5000个连接数>
- Delphi-IOCP学习笔记<三>====工作线程和Listener
- java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- PostgreSQL学习手册(函数和操作符<二>)
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- PostgreSQL学习手册(函数和操作符<二>)
- net-snmp学习笔记<一> — 介绍
- LDAP学习笔记<一>关于LDAP协议及其基本概念
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- java 从零开始,学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- Extjs学习笔记--(四,基本函数介绍)
- WPF学习笔记<二>数据绑定
- 大数据学习笔记<二>
- SQL 学习笔记<二> INSERT, UPDATE, DELETE, SELECT