簡體   English   中英

終止創建的線程 <thread> 頭

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM