возврат значения из потока

134
22 февраля 2018, 14:37

Надо чтобы возвращаемое значение с можно было использовать как-то в int main(). Как в случае передачи аргументов функции в поток принять возвращаемое значение функции для дальнейших операций с ней?

  int tr (int a, int b)
        {
             int c = a + b
             return c;
        }
    int main()
    {
    int a = 4;
    int b =5;
    mutex mtx;
    thread t1(tr, a, b, ref(mtx));
    return 0;
    }
Answer 1

Воспользуйтесь не потоком, а async:

auto fut = async(tr,a,b);
...
int result = fut.get();

Примерно так.

Answer 2

Значение, возвращаемое в функции, связанной с потоком std::thread, игнорируется. То есть при имеющейся сигнатуре вернуть его в main не получится. Нужно либо передать его как ссылочный аргумент std::ref с модификацией сигнатуры и последующим ожиданием завершения потока через join, либо использовать упомянутый в соседнем ответе std::async.

READ ALSO
Преобразование ломанной линии

Преобразование ломанной линии

Я имею неравномерную сетку в виде координат узлов в двумерном пространстве Узлы сетки хранятся в одномерном векторе, где нумерация снизу-вверх...

149
считывание с файла в поток

считывание с файла в поток

Необходимо главным потоком считывать данные с файла которые хранятся в виде строк, потоком t1 передавать структуру emp[i] в функцию для обработки,...

120
Не могу понять в чем проблема:

Не могу понять в чем проблема:

Напишите шаблонную функцию max5(), которая принимает в качестве аргумента массив из пяти элементов типа T и возвращает наибольший элемент...

134
WebApplication & Google

WebApplication & Google

Подскажите, пожалуйста, какие файлы и заголовки должна уметь отдавать WebApplication, "смотрящая" в интернет по 80-му порту так, чтобы роботы поисковиков,...

166