wllwqdeai

事件Event:
基本函数:
全局对象:HANDLE g_hEvent
创建事件对象:g_hEvent=CreateEvent(NULL,FALSE,FALSE,NULL):第二个参数bool bManualReset=False:设置为自动重置事件对象
重置状态为无信号:ResetEvent(g_hEvent)
设置状态为有信号:SetEvent(g_hEvent)
说明:
有信号转为无信号状态人为重置过程不可以控,最好设为自动完成,可以避免多个线程请求到对象;原因在于当一个线程WaitForSingleObject(g_hEvent, INFINITE)到一个人工重置事件对象后,并不能保证立马将人工重置事件对象ResetEvent(g_hEvent)为无信号状态;

  

只有一个实例运行:可以通过创建命名的事件对象,通过ERROR_ALREADY_EXISTS==GetLastError()完成;

关键代码段/临界区对象CriticalSection
全局对象:CRITICAL_SECTION g_cs
初始化:InitializeCriticalSection(&g_cs)
申请所有权:EnterCriticalSection(&g_cs)
释放所有权:LeaveCriticalSection(&g_cs)
清理:DeleteCriticalSection(&g_cs)
死锁:两个临界区对象可以实现死锁:两个线程都在没有释放自己拥有的对象时,申请自己没有的临界区对象;

分类:

技术点:

相关文章:

  • 2021-11-16
  • 2021-12-21
  • 2022-02-17
  • 2021-09-30
  • 2022-12-23
  • 2021-09-10
  • 2021-08-08
  • 2022-12-23
猜你喜欢
  • 2022-02-02
  • 2021-06-23
  • 2022-12-23
  • 2021-11-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案