• WaitForSingleObject函数的使用


    等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。 

    WaitForSingleObject 函数

    DWORD WaitForSingleObject(
        HANDLE hObject,
        DWORD dwMilliseconds
    );

    第一个参数hObject标识一个能够支持被通知/未通知的内核对象。

    第二个参数dwMilliseconds允许该线程指明,为了等待该对象变为已通知状态,它将等待多长时间。(INFINITE为无限时间量,INFINITE已经定义为0xFFFFFFFF(或-1))

    传递INFINITE有些危险。如果对象永远不变为已通知状态,那么调用线程永远不会被唤醒,它将永远处于死锁状态,不过,它不会浪费宝贵的C P U时间。

    产生事件对象的函数如下:  

    HANDLE     CreateEvent(
    
            LPSECURITY_ATTRIBUTES     lpEventAttributes,     //     SD   
            BOOL     bManualReset,                                                 //     reset     type   
            BOOL     bInitialState,                                                      //     initial     state   
            LPCTSTR     lpName                                                       //     object     name   
        );   

    bManualReset:TRUE,使用ResetEvent()手动重置为无信号状态;FALSE,当一个等待线程被释放时,自动重置状态为无信号状态。

    bInitialState:指定事件对象的初始状态,当TRUE,初始状态为有信号状态;当FALSE,初始状态为无信号状态。

    m_pathevent=CreateEvent(NULL,FALSE,FALSE,NULL);//线程释放后自动重置为无信号状态,初始化时为无信号状态

    一个Event被创建以后,操作函数:

    用OpenEvent()API来获得它的Handle,

    用CloseHandle()    来关闭它,

    用SetEvent()或PulseEvent()来设置它使其有信号,

    用ResetEvent()       来使其无信号,

    用WaitForSingleObject()或WaitForMultipleObjects()来等待其变为有信号.   

  • 相关阅读:
    递归
    递归
    递归
    San Francisco Crime Classification非数值性多分类问题
    kaggle入门题Titanic
    二叉树的前序,中序,后序,层序遍历的递归和非递归实现
    排序算法总结
    [LeetCode]148. Sort List链表归并排序
    [LeetCode]141. Linked List Cycle判断循环链表
    [leetcode]61. Rotate List反转链表k个节点
  • 原文地址:https://www.cnblogs.com/perfy/p/7216442.html
Copyright © 2020-2023  润新知