zoukankan      html  css  js  c++  java
  • DelphiIOCP学习笔记<二>====IOCP基本函数介绍和理解

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

    异步模式:类似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有返回值。

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

  • 相关阅读:
    两种解决IE6不支持固定定位的方法
    DIV+CSS IE6/IE7/IE8/FF兼容问题汇总
    解决IE6兼容性问题的十一大技巧
    解决 IE6 背景缓存
    C#用正则表达式 获取网页源代码标签的属性或值
    js中addEventListener中第3个参数
    jquery ready方法实现原理 内部原理
    jQuery动画animate方法使用介绍
    GetParam(name)
    js未分类
  • 原文地址:https://www.cnblogs.com/DKSoft/p/3026089.html
Copyright © 2011-2022 走看看