多线程通过命令行参数或设置线程数

时间:2016-01-28 07:45:57

标签: c++ multithreading

编辑/解决: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();

提前致谢。

1 个答案:

答案 0 :(得分:2)

由于要由threadcount控制数量,可以通过添加

来实现从命令行设置
int threadcount = atoi(argv[1]);

执行。可以进行一些错误检查,例如,报告非正数线程的错误。

如果要以编程方式确定线程数,具体取决于具体平台,this question可能会很有趣。