Потоки и функции с return
Лямбда выражения и возврат результата выполнения потока
Иногда необходимо в поток передать функцию, возвращающую какое-то значение, для этого удобно использовать лямбда-функции и в них получать возвращаемое значение, например:
int Sum(int a, int b)
{
return (a+b);
}
int main()
{
Sleep(2000);
int result=0;
thread Task1([&result]() {result=Sum(3,2); });
Task1.join();
cout<<result<<endl;
return 0;
}
По сути мы создаем лямбда-функцию, внутри которой вызываем функцию sum и ждем ее результата, который по указателю записываем в переменную result.