gpt4 book ai didi

c++ - 根据用户输入创建多个线程的程序不起作用 (cin)?

转载 作者:行者123 更新时间:2023-11-30 05:28:32 25 4
gpt4 key购买 nike

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

我试图让我的程序根据用户输入创建多个线程(例如:“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com