编辑/解决了:Joachim Pileborg的回答对我有用。谢谢
请保持温柔,因为这是我的第一个问题。
我实际上是在学习c++,尤其是在线程方面。我寻找一个答案(如果那里没有现成的,但我找不到它,这会让我感到惊讶)。
回到主题:
我的“播放”代码看起来像这样(控制台应用程序)
void foo(){
//do something
}
int _tmain(int argc, _TCHAR* argv[])
{
std::thread t[threadcount];
for (int i = 0; i < threadcount; ++i) {
t[i] = std::thread(foo);
}
for (int i = 0; i < threadcount; ++i) {
t[i].join();
}
}
是否可以通过argv设置threadcount的值?
如果不能,请给我简短的代码片段
std::thread::hardware_concurrency()
作为线程数,因为设置时Visualstudio也给我一个错误
const int threadcount = std::thread::hardware_concurrency();
提前致谢。
最佳答案
由于威胁的数量将由threadcount
控制,因此可以通过添加以下命令来从命令行进行设置
int threadcount = atoi(argv[1]);
实现。可以进行一些错误检查,例如报告非正数线程上的错误。
如果要通过编程方式确定线程数,则取决于特定的平台,this question可能很有趣。