1.关键段
CRITICAL_SECTION m_cs; //创建一个关键段
InitializeCriticalSection(&m_cs); //初始化关键段
EnterCriticalSection(&pthis->m_cs);
//此处是需要互斥进入的代码段
LeaveCriticalSection(&pthis->m_cs);
DeleteCriticalSection(&m_cs); //删除关键段
2.原子锁
一般情况下,在多线程编程中如果对某一个变量的值进行改变的话,使用原子锁比较方便
InterlockedIncrement(&pthis->m_lRunThreadNum); //加1操作
//...
InterlockedDecrement(&pthis->m_lRunThreadNum); //减1操作
3.互斥量

2.信号量
注意:互斥量用于线程的互斥,信号量用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源

本文介绍了C++中多线程编程的关键概念,包括关键段、原子锁、互斥量和信号量。重点讨论了原子锁在改变变量值时的便利性,以及互斥量和信号量的区别——互斥量用于线程互斥,确保资源访问的唯一性,而信号量则用于线程同步,控制资源的有序访问。
最低0.47元/天 解锁文章
1572

被折叠的 条评论
为什么被折叠?



