编辑/解决:Joachim Pileborg的回答为我做了这个工作。 THX
请温柔,因为这是我的第一个问题。
我实际上正在学习并使用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()
作为threadcount,因为在设置
时Visualstudio也会给我一个错误const int threadcount = std::thread::hardware_concurrency();
提前致谢。
答案 0 :(得分:2)
由于要由threadcount
控制数量,可以通过添加
int threadcount = atoi(argv[1]);
执行。可以进行一些错误检查,例如,报告非正数线程的错误。
如果要以编程方式确定线程数,具体取决于具体平台,this question可能会很有趣。