c++互斥量

互斥量是一个变量,这个变量可以处于两态之一的变量:解锁和加锁,故只需要一个二进制位表示它,不过实际上,常常使用一个整型量,0表示解锁,而其他所有的值则表示加锁。

互斥量的作用是管理共享资源或一小段代码。当一个线程(或进程)需要访问临界区(临界区只准许一个线程进入)时,它调用mutex_lock。如果该互斥量当前是解锁的(即临界区可用),此调用成功,调用线程可以自由进入该临界区。另一方面,如果该互斥量已经加锁,调用线程被阻塞,直到在临界区(临界区只准许一个线程进入)中的线程完成并调用mutex_unlock。如果多个线程被阻塞在该互斥量上,将随机选择一个线程并允许它获得锁。

//互斥量不仅在线程中可以使用,在函数中也可以使用
#include "stdafx.h"
#include 
#include 
#include 
using namespace std;
mutex mMutexLoopQueue;
void ceshi1()
{
	//unique_lock lock(mMutexLoopQueue);
	while (true)
	{
		cout << "ceshi1";
	}
}
void ceshi2()
{
	unique_lock lock(mMutexLoopQueue);
	while (true)
	{
		cout << "ceshi2";
		ceshi1();
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	ceshi2();
	return 0;
}
ceshi1()函数中将unique_lock lock(mMutexLoopQueue);注释掉,输出结果为一个ceshi2,其他的都为ceshi1
若不注释unique_lock lock(mMutexLoopQueue);那么程序将会卡死


 

 

你可能感兴趣的:(c++)