Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
lock()和guard()在lock\u guard之后的区别是什么 我通过C++ Boost库来编写循环缓冲区代码。我提出了一些我不明白的问题 boost::lock_guard<boost::mutex> guard( Mutex ); boost::lock_guard<boost::mutex> lock( Mutex ); boost::lock\u-guard(互斥锁); boost::lock_guard lock(互斥锁);_C++_Boost_Mutex - Fatal编程技术网

lock()和guard()在lock\u guard之后的区别是什么 我通过C++ Boost库来编写循环缓冲区代码。我提出了一些我不明白的问题 boost::lock_guard<boost::mutex> guard( Mutex ); boost::lock_guard<boost::mutex> lock( Mutex ); boost::lock\u-guard(互斥锁); boost::lock_guard lock(互斥锁);

lock()和guard()在lock\u guard之后的区别是什么 我通过C++ Boost库来编写循环缓冲区代码。我提出了一些我不明白的问题 boost::lock_guard<boost::mutex> guard( Mutex ); boost::lock_guard<boost::mutex> lock( Mutex ); boost::lock\u-guard(互斥锁); boost::lock_guard lock(互斥锁);,c++,boost,mutex,C++,Boost,Mutex,这是我第一次使用boost库,所以我不太明白这两者之间的区别。请帮助我没有区别-lock和guard只是变量名 您正在声明类型为boost::lock\u guard的变量,并使用变量Mutex初始化它们。第一个称为guard,第二个称为lock 如果您将它们都这样并排编写,那么您将看到的行为有一个区别:如果当前线程尚未锁定互斥锁,那么第一个最终应该获得互斥锁,但是第二个会死锁,因为您不能两次锁定boost::mutex,您刚刚命名了第一个guard和第二个lock它们在概念上是相同的: int

这是我第一次使用boost库,所以我不太明白这两者之间的区别。请帮助我

没有区别-
lock
guard
只是变量名

您正在声明类型为
boost::lock\u guard
的变量,并使用变量
Mutex
初始化它们。第一个称为
guard
,第二个称为
lock


如果您将它们都这样并排编写,那么您将看到的行为有一个区别:如果当前线程尚未锁定互斥锁,那么第一个最终应该获得互斥锁,但是第二个会死锁,因为您不能两次锁定
boost::mutex
,您刚刚命名了第一个
guard
和第二个
lock

它们在概念上是相同的:

int i(0);
int j(0);
这将
i
j
声明为
int
类型的变量,并使用
0
对它们进行初始化

与此相同:

boost::lock_guard<boost::mutex> guard( Mutex );
boost::lock_guard<boost::mutex> lock( Mutex );
boost::lock\u-guard(互斥锁);
boost::lock_guard lock(互斥锁);

这将
guard
lock
声明为
boost::lock\u guard
类型的变量,并使用
互斥体对它们进行初始化。很简单。

这只是两个相同类型的不同命名变量:boost::lock\u guard,它们都作为一个保护锁工作,在离开当前范围时将被释放