• 19.事件


    • 创建事件
      1 HANDLE event[3] = { 0 };
    • 创建线程
      1 HANDLE hthread[3] = { 0 };
    • 事件初始化
      1 event[0] = CreateEvent(NULL, TRUE, FALSE, NULL);
      2     //第一个参数,指定一个结构,用于设置对象的安全特性
      3     //第二个参数,如果为TRUE,表示创建一个人工重设事件,如果为FALSE,创建一个自动重设事件
      4     //第三个参数,如事件应内部进入触发状态,则为TRUE
      5     //第四个参数,指定事件对象的名字,NULL为匿名
    • 创建线程
      1 hthread[0] = CreateThread(NULL, 0, firstthread, NULL, 0, NULL);
      2 hthread[1] = CreateThread(NULL, 0, secondthread, NULL, 0, NULL);
    • 发送事件
      1 DWORD WINAPI firstthread(void *p)
      2 {
      3     printf("第一个线程执行完成
      ");
      4     //发送事件
      5     SetEvent(event[0]);
      6     return 0;
      7 }
    • 接受事件
      1 WaitForSingleObject(event[0],INFINITE);//等待event信号出现

    完整代码:

     1 #include <Windows.h>
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 
     5 //事件
     6 HANDLE event[3] = { 0 };
     7 //线程
     8 HANDLE hthread[3] = { 0 };
     9 
    10 DWORD WINAPI firstthread(void *p)
    11 {
    12     printf("第一个线程执行完成
    ");
    13     //发送事件
    14     SetEvent(event[0]);
    15     return 0;
    16 }
    17 
    18 
    19 DWORD WINAPI secondthread(void *p)
    20 {
    21     WaitForSingleObject(event[0],INFINITE);//等待event信号出现
    22     printf("第二个线程执行完成
    ");
    23     return 0;
    24 }
    25 
    26 void main()
    27 {
    28     event[0] = CreateEvent(NULL, TRUE, FALSE, NULL);
    29     //第一个参数,指定一个结构,用于设置对象的安全特性
    30     //第二个参数,如果为TRUE,表示创建一个人工重设事件,如果为FALSE,创建一个自动重设事件
    31     //第三个参数,如事件应内部进入触发状态,则为TRUE
    32     //第四个参数,指定事件对象的名字,NULL为匿名
    33     event[1] = CreateEvent(NULL, TRUE, FALSE, NULL);
    34 
    35     hthread[0] = CreateThread(NULL, 0, firstthread, NULL, 0, NULL);
    36     hthread[1] = CreateThread(NULL, 0, secondthread, NULL, 0, NULL);
    37 
    38     WaitForMultipleObjects(2, hthread, TRUE, INFINITE);
    39     printf("全部完成
    ");
    40     system("pause");
    41 }
  • 相关阅读:
    vue组件传值
    mui父子页面蒙版
    mui页面传值
    mui跳转页面短暂白屏
    Sql 向数据库中添加一行数据
    redis启动报错 no config file specified, using the default config.
    C# 合并表达式树
    .net从集合中取出下拉框类型值数据
    jquery从数组中取出满足要求的元素
    RabbitMQ Topic交换机代码实现
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8406129.html
Copyright © 2020-2023  润新知