zoukankan      html  css  js  c++  java
  • 网络编程基础_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;
    }
  • 相关阅读:
    周鸿祎谈程序员创业
    ESP8266-iot-3
    ESP8266文档阅读ESP8266 SDK 入门指南
    ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf
    ESP8266-iot-2
    ESP8266-iot-简介1
    yum安装mysql
    CentOS安装MySQL详解 转
    centOS7永久关闭防火墙(防火墙的基本使用(转)
    linux下composer安装
  • 原文地址:https://www.cnblogs.com/ltyandy/p/10945956.html
Copyright © 2011-2022 走看看