zoukankan      html  css  js  c++  java
  • 信號量同步多線程

    windows.WaitForSingleObject(FEventHandle, 180000);

    ......

    FEventHandle := Windows.CreateEvent(nil, false, False, PChar(@FEventName));

    ......

    if FEventHandle <> THandle(nil) then Windows.CloseHandle(FEventHandle);

    ......

    if FEventHandle <> THandle(nil) then Windows.SetEvent(FEventHandle);

    .......

    不給信號setEvent()觸發,一旦給信號立馬退出。

    函数原型:

    HANDLE CreateEvent(
      LPSECURITY_ATTRIBUTES lpEventAttributes,
                          // pointer to security attributes
      BOOL bManualReset,  // flag for manual-reset event
      BOOL bInitialState, // flag for initial state
      LPCTSTR lpName      // pointer to event-object name
    );

    其中有四个参数,分别注解

    LPSECURITY_ATTRIBUTES  pEventAttributes 安区参数  一般用户不用考虑它

    BOOL bManualReset    表示SetEvent 置位,WaitForSingleObject使用以此后 信号量的有无,为TRUE 的时候,表示有信号,为FALSE为无信号,也可以理解为SetEvent 的作用是置一次信号,与PulseEvent函数作用相同了。

    BOOL bInitialState,    表示初始时的信号量有无,为TRUE 的时,表示有信号,反之无信号

    LPCTSTR lpName       信号量的别名


    其中主要以BOOL bManualReset  , BOOL bInitialState, 的使用最为重要,采用那种配对方式取决于程序的工作方式了。

    WaitForSingleObject

    l      功能——使程序处于等待状态,直到信号量hHandle出现(即其值大于等于1)或超过规定的等待时间

    l      格式

    DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);

    l      参数说明

    hHandle——信号量指针。

    dwMilliseconds——等待的最长时间(INFINITE为无限等待)

  • 相关阅读:
    ReaHat7.6/7.7 最小化安装更新yum源
    Navicat Premium For Mac 12.0.2x 破解教程
    java程序员经常使用的Intellij Idea插件
    NDK版本 下载地址
    在Intellij IDEA下用X-debug调试PHP
    DMSFrame 之查询表达式用法(一)
    Wise 打包细节
    将Centos的yum源更换为国内的阿里云(163)源
    Centos下安装 .net Core运行程序
    使用 Docker 一步搞定 ZooKeeper 集群的搭建
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940765.html
Copyright © 2011-2022 走看看