并发,std::mutex

互斥锁

任意时刻只有一个线程能访问互斥资源,

.


std::mutex _mutex;//全局锁

 int x = 0;//资源

void func_1()
{
	for (int i = 0; i < 500000; i++)
	{
	//lock 只能调用一次,如果多次可用recursive_mutex
		_mutex.lock();//访问公共资源时,互斥,获取访问权,如果失败则阻塞直到获得访问权
		//try_lock 获取失败则返回false 并不阻塞
		x+=1;
		_mutex.unlock();//释放资源
        //lock_guard 类 和 unique_lock 类可自动管理mutex的lock和unlock ,//相当于指针的 智能指针管理new delete一样属于RAII

	}
}

int main(int argc, char *argv[])
{

	auto t = std::thread(func_1);

	t.detach();

	auto t1 = std::thread(func_1);

	t1.detach();

	Sleep(1000);

	cout << x << endl;
	cout << "main thread" << endl;
	  


	system("pause");
	return 0;
}



 

MSDN参考,https://msdn.microsoft.com/en-us/library/hh921467(v=vs.120).aspx

你可能感兴趣的:(并发,std::mutex)