程序基于用户输入创建多个线程不起作用(cin)

Program to create a number of threads based on user input not working (cin)?

本文关键字:线程 不起作用 cin 创建 输入 用户 程序 于用户      更新时间:2023-10-16

如果这个问题看起来很简单,我深表歉意。我还在学习线程。我已经尝试在这里寻找解决方案,但没有找到任何解决方案。

我正在尝试让我的程序根据用户输入创建许多线程(例如:"cin>> 5"将创建 5 个线程),但它说"线程 myThreads[ i ]"中的"i"需要是一个常量值。代码如下:

void exec(int n)
{
    cout << "Thread " << n << endl;
}

int main()
{
    int numThreads = 0;
    // create threads
    cin >> numThreads;
    thread myThreads[numThreads]; // this part says myThreads "must be a constant value"
    for (int i = 0; i < numThreads; i++)
    {      
        myThreads[i] = thread(exec, i);
    }
    for (int i = 0; i < numThreads; i++)
    {
        myThreads[i].join();
    }
    cout << "Done!" << endl;
}

关于如何修复该部分的任何想法?我已经尝试了几种不同的方法,但到目前为止它们还没有奏效。谢谢。

多线程没有问题。问题是用作动态数组的静态数组。

尝试这样的事情:

thread* myThreads = new thread[numThreads];

有关C++动态内存的更多信息:http://www.cplusplus.com/doc/tutorial/dynamic/

詹姆斯·阿德基森的UPD:不要忘记delete[]阵列以避免内存泄漏。