• 多线程同步


    一、 临界区

      1.  临界区作用

        线程在执行代码时,将代码锁定,不允许其他线程执行, 只有线程离开后,其他线程才能使用这个代码。

      2.  临界区的使用

        2.1 初始化临界区  InitializeCriticalSection

        2.2 临界区加锁   EnterCriticalSection

        2.3 临界区解锁   LeaveCriticalSection

        2.4 释放临界区   DeleteCriticalSection

    二、  事件

      1.  事件:

        通知线程的作用,当收到事件时, 线程可以执行,是否线程将等候事件的发生。

      2.  事件的用法

        2.1 创建事件

    HANDLE CreateEvent(
    LPSECURITY_ATTRIBUTES lpEventAttributes,        //安全属性
    BOOL bManualReset,                              //重置方式      TRUE: 手动重置    FALSE:自动重置
    BOOL bInitialState,                             //初始化状态      TRUE: 信号     FALSE: 无信号            
    LPTSTR lpName                                   //内核对象名称                                    
    );                    

    返回创建好的事件句柄。

    如果,bManualReset = FALSE, 系统在等候到事件后,会自动将事件重置为无信号状态。

    如果,bManualReset = TRUE,  必须手动重置状态, 使用函数为: ResetEvnet函数重置为无信号状态。

        2.2 等候事件: WaitForSingleObject

        2.3 触发事件: SetEvent

        2.4 关闭事件: CloseHandle

  • 相关阅读:
    PHP(表单元素)
    PHP(一般标签介绍,标签特性,实体名称,绝对路径与相对路径)
    Oracle课程档案,第十七天
    Oracle课程档案,第十六天
    Oracle课程档案,第十四天
    Oracle课程档案,第十五天
    Oracle课程档案,第十三天
    Oracle课程档案,第十二天
    Oracle课程档案。第十一天
    [haoi2011]防线修建
  • 原文地址:https://www.cnblogs.com/icodecpp/p/3169323.html
Copyright © 2020-2023  润新知