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.信号量
注意:互斥量用于线程的互斥,信号量用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。</