编译以下代码时:
#include <iostream>
#include <thread>
using namespace std;
void hello()
{
cout << "Hello World!" << endl;
}
int main()
{
cout << "starting" << endl;
thread t(hello);
t.join();
cout << "ending" << endl;
return 0;
}
使用:
$ g++-4.6.1 -std=c++0x -pthread threading.cpp
我收到以下错误:
threading.cc: In function ‘int main()’:
threading.cc:13:2: error: ‘thread’ was not declared in this scope
threading.cc:13:9: error: expected ‘;’ before ‘t’
threading.cc:14:2: error: ‘t’ was not declared in this scope
这是在MacOSX Lion上使用自定义构建的gcc 4.6.1。对gcc 4.6有效的所有其他c ++ 0x特性就像魅力一样。这是MacOSX特定的错误吗?
答案 0 :(得分:5)
std::thread
(以及C ++ 11线程库的其余部分)仅适用于gcc 4.6.1支持的某些平台。不幸的是,MacOSX不是那些平台之一。
我的商业Just::Thread库提供了带有gcc 4.5的32位MacOSX的C ++ 11线程工具,但是还不支持gcc 4.6。
答案 1 :(得分:3)
请参阅http://gcc.gnu.org/PR50196 - Mac OS X不支持我们依赖的pthread的某些部分。构建最新版本无济于事,但GCC 4.7可能会修复它