zoukankan      html  css  js  c++  java
  • MFC 线程同步(转)

    一直在使用MFC的线程同步类,但却没有深入研究过,正因为此几个月前写的一个较大的代码还发生了互锁,导致查了好半天。今天静下心来大致复习一遍。
      MFC中有7种多线程类,分两类:同步对象(CSyncObject, CSemaphore, CMutex, CCriticalSection, CEvent);以及同步访问对象(CMultiLock and CSingleLock)
      其中我最常用的是CCriticalSection,从本科毕设的MPEG4流数据链表缓存,到前几天写的USB摄像头回放并图像数据处理,对于其它同步类却不甚清楚
      查相关资料简单总结如下:
      同步对象:
      CCriticalSection临界区是保证在某一个时间只有一个线程可以访问数据的方法;
      CMutex互斥与CCriticalSection很相似,但是使用时相对复杂一些,它不仅可以在同一应用程序的线程间实现同步,还可以在不同的进程间实现同步(如dll);
      Csemaphore信号量可以同一时刻允许多个线程访问同一个资源。
      事件对象:
      CEvent事件对象处于两种状态之一:有信号和无信号,线程可以监视处于有信号状态的事件,以便在适当的时候执行对事件的操作。使用SetEvent()来发出信号,使用WaitForSingleObject()来等待信号到来
      自定义消息通信:
      PostMessage()或PostThradMessage()来发送消息
  • 相关阅读:
    Nuget:aliyun-openapi-sdk
    iptables简述
    openOffice安装
    bash:command not found
    linux nc命令
    linux命令帮助
    linux用户管理
    LDAP 后缀操作
    LDAP缓存命令
    LDAP索引及缓存优化
  • 原文地址:https://www.cnblogs.com/zhihaowang/p/10128635.html
Copyright © 2011-2022 走看看