• 网络编程基础_2.等待事件


    等待事件

    #include <stdio.h>
    #include <windows.h>
    
    int main()
    {
        // 1. 以重叠 IO 的方式打开一个文件
        HANDLE FileHandle = CreateFile(L"test.txt", GENERIC_ALL,
            NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
    
        // 2. 投递第一个 IO 请求,读取 [3 ~ 6] 的字符,初始化一个事件对象
        OVERLAPPED OverLapped1 = { 0 };
        OverLapped1.Offset = 3;
        OverLapped1.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
        CHAR Buffer1[10] = { 0 };
        ReadFile(FileHandle, Buffer1, 4, NULL, &OverLapped1);
    
        // 3. 投递第二个 IO 请求,读取 [0 ~ 2] 的字符,初始化一个事件对象
        OVERLAPPED OverLapped2 = { 0 };
        OverLapped2.Offset = 0;
        OverLapped2.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
        CHAR Buffer2[10] = { 0 };
        ReadFile(FileHandle, Buffer2, 3, NULL, &OverLapped2);
    
        // 4. 等待重叠结构中更多事件对象句柄,如果有信号就是说明 IO 请求完成了
        WaitForSingleObject(OverLapped1.hEvent, INFINITE);
        WaitForSingleObject(OverLapped2.hEvent, INFINITE);
    
        // 5. 为了防止句柄泄露,应该关闭句柄
        CloseHandle(OverLapped1.hEvent);
        CloseHandle(OverLapped2.hEvent);
    
        // 缺点: 最终也会阻塞在等待函数,应该要在一个新的线程中进行等待操作
    
        return 0;
    }
  • 相关阅读:
    HashMap中红黑树插入节点的调整过程
    grep使用小tips
    数字电路设计流程之LINT,CDC
    芯片设计中的efuse
    NetSuite's next generation transaction Inbound Shipment
    hadoop集群搭建
    hive安装
    慢查询SQL排查
    sipresponse
    【项目】项目200
  • 原文地址:https://www.cnblogs.com/ltyandy/p/10945956.html
Copyright © 2020-2023  润新知