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()来发送消息
  • 相关阅读:
    maven项目的构建命令
    linux的find命令
    python函数中参数前面的*和**的含义
    python中字典和集合的使用
    python中列表和元组的基本操作
    在Python中写中文注释格式
    linux 文件操作基本命令
    linux脚本实现递归阶乘
    base64
    从DispatcherServlet中的doService了解spring组件之间的处理流程
  • 原文地址:https://www.cnblogs.com/zhihaowang/p/10128635.html
Copyright © 2011-2022 走看看