Надо чтобы возвращаемое значение с
можно было использовать как-то в 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;
}
Воспользуйтесь не потоком, а async
:
auto fut = async(tr,a,b);
...
int result = fut.get();
Примерно так.
Значение, возвращаемое в функции, связанной с потоком std::thread
, игнорируется. То есть при имеющейся сигнатуре вернуть его в main
не получится. Нужно либо передать его как ссылочный аргумент std::ref
с модификацией сигнатуры и последующим ожиданием завершения потока через join
, либо использовать упомянутый в соседнем ответе std::async
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я имею неравномерную сетку в виде координат узлов в двумерном пространстве Узлы сетки хранятся в одномерном векторе, где нумерация снизу-вверх...
Необходимо главным потоком считывать данные с файла которые хранятся в виде строк, потоком t1 передавать структуру emp[i] в функцию для обработки,...
Напишите шаблонную функцию max5(), которая принимает в качестве аргумента массив из пяти элементов типа T и возвращает наибольший элемент...
Подскажите, пожалуйста, какие файлы и заголовки должна уметь отдавать WebApplication, "смотрящая" в интернет по 80-му порту так, чтобы роботы поисковиков,...