[英]Terminate a thread created by <thread> header
我正在制作一個小程序來理解線程的流程。 我遇到了運行時錯誤。 我花了2天的時間才發現給出運行時錯誤的函數,有一個線程在其他地方運行。 現在,我需要正確關閉該線程,以便我的主函數可以正常終止。
這是我所做的一個例子;
void main()
{
int n = fun2();
cout << n;
}
int fun2()
{
thread parallel(fun3);
return 2;
}
void fun3()
{
while (smth)
{
...
}
}
fun3()確實是文件閱讀部分。 我讀了很多與這個問題有關的問題,但是沒有一個問題實際上有用,大多數都是使用HANDLE thingy,我不明白。 如果還有其他方法可以同時執行2個函數,我想知道。
任何幫助,將不勝感激。
您收到運行時錯誤,因為如果std::thread
沒有加入或分離,它將執行std::terminate()
。 你的main函數在沒有加入fun2()
生成的線程的情況下完成。 一個簡單的修復就是在第二個函數中加入線程,如下所示:
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)
{
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.