我正在制作一个小程序来理解线程的流程。我遇到了运行时错误。我花了2天的时间才发现给出运行时错误的函数,有一个线程在其他地方运行。现在,我需要正确关闭该线程,以便我的主函数可以正常终止。
这是我所做的一个例子;
void main()
{
int n = fun2();
cout << n;
}
int fun2()
{
thread parallel(fun3);
return 2;
}
void fun3()
{
while (smth)
{
...
}
}
fun3()执行文件阅读部分。我读了很多与这个问题有关的问题,但是没有一个问题实际上有用,大多数都是使用HANDLE thingy,我不明白。如果还有其他方法可以同时执行2个函数,我想知道。
任何帮助都将不胜感激。
答案 0 :(得分:0)
您收到运行时错误,因为如果std::thread
未加入或已分离,std::terminate()
将执行fun2()
。您的main函数在没有加入void main()
{
int n = fun2();
cout << n;
}
int fun2()
{
thread parallel(fun3);
parallel.join() // wait for the thread to finish
return 2;
}
void fun3()
{
while (smth)
{
...
}
}
生成的线程的情况下完成。一个简单的修复就是在第二个函数中加入线程,如下所示:
Axios