本文主要是介绍c++多线程,lock_guard,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
template<class Mutex> class lock_guard;
lock_guard
是一个一直使互斥量锁定的管理锁对象;
在构建阶段,互斥量被调用线程锁定,在析构阶段,锁unlocked
lock_guard是最简单的锁,对具有自动持续时间的对象特别有用,该i持续时间能一直持续到上下文结束;
#include <iostream>#include <mutex>#include <thread>#include <stdexcept>using namespace std;mutex mtx;void PrintEven(int x) {if (x % 2 == 0) {cout<< x<< " is even"<<endl;} else {throw(logic_error("not even"));}}void PrintThreadId(int x) {try {//using local lock_guard to lock mtx//guarantees unlocking on destruction/exceptionlock_guard<mutex> lck(mtx);PrintEven(x);} catch (logic_error&) {cout<<" exception caught."<<endl;}}int main(void) {thread threads[10];for (int i = 0; i < 10; ++i) {threads[i] = thread(PrintThreadId, i + 1);}for (auto& t : threads) {t.join();}return 0;}
这篇关于c++多线程,lock_guard的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!