CMutex, CCriticalSection用于对资源的互斥访问。

CMutex可以跨进程使用, CCriticalSection只可以在进程内部使用。

创建CMutex需要更多的资源,只用于进程内部时使用CCriticalSection获得更高的效率。


CCriticalSection  m_CritSection;//用于临界区 方法一
CSingleLock singleLock(&m_CritSection); ////CMutex Mutex;//用于互斥锁 方法二
//CSingleLock singleLock(&Mutex); //
int StartMainLock()
{singleLock.Lock();//没被调用就上锁自己用,已被调用就等着if (singleLock.IsLocked()){int ret=StartMain();  //被锁的 处理内容singleLock.Unlock();//解锁  所有返回之前解锁return ret;}singleLock.Unlock();//解锁return -1;
}
 //事件HANDLE  m_hEvent= CreateEvent(NULL, FALSE, FALSE, NULL); //新建WaitForSingleObject(m_hEvent, INFINITE); //无限时间等待ResetEvent(m_hEvent); 重置 为无信号SetEvent(m_hEvent); //设置有信号                 CloseHandle(m_hEvent); //关闭

CSemaphore指定资源的线程的计数

MFC多线程 信号量CSemaphore 临界区与互斥 事件相关推荐

  1. 临界区,互斥量,信号量,事件的区别

    临界区(Critical section)与互斥体(Mutex)的区别 1.临界区只能用于对象在同一进程里线程间的互斥访问:互斥体可以用于对象进程间或线程间的互斥访问. 2.临界区是非内核对象,只在用 ...

  2. 临界区、互斥量、事件、信号量四种方式

    临界区(Critical Section).互斥量(Mutex).信号量(Semaphore).事件(Event)的区别 1.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据 ...

  3. python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)

    什么是线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位.线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同 ...

  4. 一文看懂临界区、互斥锁、同步锁、临界区、信号量、自旋锁等名词!

    点击上方"业余草",选择"置顶公众号" 第一时间获取技术干货和业界资讯! 关于线程安全的专有名词有一大堆.你们突然之间问我这个名词是什么意思,那个名词是什么意思 ...

  5. MFC多线程同步互斥

    MFC多线程同步互斥[转载] http://blog.sina.com.cn/s/blog_62d15fb601017dhn.html https://www.cnblogs.com/zhanghu5 ...

  6. MFC多线程各种线程用法 .

    一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为 IDC_SLEEP_SI ...

  7. VC++ MFC 多线程及线程同步(详细、全面总结!)

    更多详情:http://blog.csdn.net/whyacinth/ VC++ MFC 多线程及线程同步 关键词: MFC    多线程及线程同步                          ...

  8. 十六、用信号量机制实现进程互斥、同步、前驱关系

    一.知识总览 二.信号量机制实现进程互斥 注意: 1.信号量mutex表示进入临界区的名额 2.对不同的临界资源需要设置不同的互斥信号量 3.P.V操作必须成对出现,缺少P(mutex)就不能保证临界 ...

  9. 操作系统(二十二)用信号量机制实现进程互斥、同步、前驱关系

    2.3.5 用信号量机制实现进程互斥.同步.前驱关系 目录 2.3.5 用信号量机制实现进程互斥.同步.前驱关系 2.3.5.1 用信号量机制实现进程互斥 2.3.5.2 用信号量机制实现进程同步 2 ...

最新文章

  1. 判断闰年 及其某天为这一年的多少天
  2. 3331付款方式怎么写_拼多多怎么刷单 为什么要刷单
  3. python数据科学-单变量数据分析
  4. oracle怎么删除存储,删除Oracle分区存储是一个怎样的过程?
  5. 用终端访问路由器设置端口开发_网络故障排查最全总结!ONU、机顶盒、路由器常见网络问题及处理方法...
  6. Kotlin入门(22)适配器的简单优化
  7. linux查看根目录的大小,linux下查看根目录或当前目录大小
  8. java简单的数据库查询(SQLServer数据库)
  9. 计算机没有无线网卡驱动程序,电脑上没有光驱怎么安装无线网卡驱动 - 驱动管家...
  10. gavin中文是什么意思_Gavin[加文,盖温]的中文翻译及英文名意思
  11. 在我的世界里玩我的世界是一种怎样的体验?
  12. 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
  13. 王者荣耀吃鸡气泡等等头像框DIY在线生成N种风格微信小程序源码下载
  14. 前天在腾讯soso问问上别人问我raid问题?
  15. 兄弟俩畅游Tomcat城市的SpringMVC科技园区(文末有惊喜)
  16. C语言编程之用circle画圆形
  17. 科大讯飞麦克风阵列adb操作详解
  18. Java游戏服务器开发之A星算法
  19. 国内无线频谱资源分配图集
  20. DNSPod十问辛恒:如何让1万名保洁阿姨学会在线接单?

热门文章

  1. 具体的数据库存储过程的编写
  2. LightDB单机安装
  3. OpenGL超级宝典(第7版)笔记20 统一变量 一致区块 uniform相关内容 清单5.9-5.28
  4. 致创业新人,我网络创业的一些心得。
  5. 学习云计算技术前景在哪里?云计算技术发展趋势
  6. STM32和ESP32- 主讲esp
  7. python足球大数据分析_使用Python抓取欧洲足球联赛数据进行大数据分析
  8. pvpgn mysql_魔兽私服pvpgn搭建
  9. http协议_代理服务(proxy)
  10. 课程设计——部门管理系统C++