Возврат результата из потока

Попытался вернуть результат выполнения функции в потоке с помощью лямбда функций. Но почему-то выводится "мусор". Я уже и отладчиком прошелся, и видео на эту тему посмотрел. Все равно не могу понять, почему в result не записывается результат функции

int tr(int a, int b)
{
    return a + b;
}


int main()
{
    setlocale(LC_ALL, "Rus");
    int result;

    thread th([&result]() {result = tr(3, 10); });

    cout << result << endl;


    th.join(); 
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Поменяйте местами строки - вот так:

th.join();
cout << result << endl;

У вас поток отработать не успевает, как вы уже выводите переменную...

→ Ссылка