Dak*_*orn 0 c++ multithreading mutex c++11
我现在正在研究C++ 11中的线程,我遇到了以下代码:
lock_guard<mutex> lg(mutex);
Run Code Online (Sandbox Code Playgroud)
没有变数mutex.mutex只是类型的名称.
任何人都可以解释我上面的代码行如何工作?
为什么编译器(GCC)不会打印任何错误?
完整代码:
#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>
using namespace std;
void do_something()
{
lock_guard<mutex> lg(mutex);
cout << "Working..." << endl;
this_thread::sleep_for(chrono::milliseconds(3000));
}
int main()
{
thread thd(do_something);
thd.join();
}
Run Code Online (Sandbox Code Playgroud)
编译器认为这是一个原型函数声明:
lock_guard<mutex> lg(mutex);
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,编译器将其解析为名为"lg"的函数的声明,该函数将互斥锁作为参数并返回lock_guard实例.
#include <mutex>
int main()
{
using namespace std;
lock_guard<mutex> lg(mutex);
return 0;
}
vc12 output : warning C4930 : 'std::lock_guard<std::mutex> lg(std::mutex)' : prototyped function not called(was a variable definition intended ? )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |