zoukankan      html  css  js  c++  java
  • 多线程同步

    一、 临界区

      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

  • 相关阅读:
    Zookeeper----1.基础知识
    UML图
    VUE入门3---axios
    VUE入门2---vue指令
    谁先执行?props还是data或是其他? vue组件初始化的执行顺序详解
    vue双向绑定原理分析
    HTML/CSS -- 浏览器渲染机制
    vue工作原理分析
    导入导出需求整理
    .NET 异步详解
  • 原文地址:https://www.cnblogs.com/icodecpp/p/3169323.html
Copyright © 2011-2022 走看看