如果这个问题看起来很简单,我深表歉意。我还在学习线程。我已经尝试在这里寻找解决方案,但没有找到。
我试图让我的程序根据用户输入创建多个线程(例如:“cin >> 5”将创建 5 个线程)但它在“threads 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/
James Adkison 更新:
不要忘记 delete[]
您的数组以避免内存泄漏。
关于c++ - 根据用户输入创建多个线程的程序不起作用 (cin)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36782156/