【发布时间】:2012-12-20 22:09:54
【问题描述】:
我正在编写一个简单的 C++ 程序来演示锁的使用。我正在使用codeblocks 和gnu gcc 编译器。
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
int x = 0; // shared variable
void synchronized_procedure()
{
static std::mutex m;
m.lock();
x = x + 1;
if (x < 5)
{
cout<<"hello";
}
m.unlock();
}
int main()
{
synchronized_procedure();
x=x+2;
cout<<"x is"<<x;
}
我收到以下错误:mutex in namespace std does not name a type。
为什么会出现此错误? 编译器不支持使用锁吗?
【问题讨论】:
-
如果你在 Windows 上,MinGW 还没有实现线程库。我去过那里并希望它有所不同,但至少 MSVC 可以正常工作。
-
哇,环顾四周,显然these 之一(仅限4.7)现在应该支持它。我目前正在下载一个来测试它,如果它最终可以工作,我会通知你。
-
好吧,这对我来说根本不起作用。我不知道你会不会有更好的运气。
-
哦,嘿。 This answer 确实有效!确保将
-static添加到链接器选项中。唯一的问题是我只能找到一个 GCC 4.7.0,这意味着放弃一些其他 C++11 特性,直到构建一个更新的特性。
标签: c++ multithreading compiler-errors locking mingw