问题本身的描述非常简单。我正在测试 C++11 中 std::thread 库和 boost::thread 库的差异。
这些的输出:
#include <iostream>
#include <thread>
#include <boost/thread.hpp>
int main() {
std::cout << std::thread::hardware_concurrency() << std::endl;
std::cout << boost::thread::hardware_concurrency() << std::endl;
return 0;
}
给了我不同的结果:
0
4
这是为什么?
PS:gcc包的版本是4.6.2-1.fc16(x86_64)。我在用着
g++ test.cc -Wall -std=c++0x -lboost_thread-mt -lpthread
查看 /usr/include/c++/4.6.2/thread 后
可以看到,实现实际上是:
// Returns a value that hints at the number of hardware thread contexts.
static unsigned int
hardware_concurrency()
{ return 0; }
所以问题解决了。这只是 gcc 4.6.2 中尚未实现的另一个功能
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)