abhiramthejas Ответов: 1

В C++ я сделал вызов функции как 4 threads.in эта функция имеет значение int как я могу использовать ее в другой функции


cv::VideoCapture a;
	cv::VideoCapture b;
	cv::VideoCapture c;
	cv::VideoCapture d;
	a.open("traffic1.mp4");
	b.open("traffic2.mp4");
	c.open("traffic3.mp4");
	d.open("traffic4.mp4");
	std::thread t1 (traffic,a,"a");
	std::thread t2 (traffic, b, "b");
	std::thread t3(traffic, c, "c");
	std::thread t4(traffic, d, "d");
	t1.join();
	t2.join();
	t3.join();
	t4.join();

здесь в функции traffic () есть целочисленное значение как я могу получить к нему доступ каков синтаксис

Что я уже пробовал:

я не получил никакого синтаксиса для этого

Jochen Arndt

Откуда нам знать?

Вы не показали нам функцию traffic (), и опубликованный код не содержал никакой целочисленной переменной.

1 Ответов

Рейтинг:
1

KarstenK

Для использования в других функциях необходимо объявить глобальную переменную. Вы можете использовать обычный int снаружи функция трафика.

Но я бы назвал это серьезным недостатком, что у вас есть разные потоки, обращающиеся к одной и той же переменной, если переменная не является константа для всех потоков .

Неясно, какой поток выигрывает гонку за доступ. Поэтому лучше написать функции getInteger () и setInteger () с некоторым кодом синхронизации.

Пожалуйста, прочтите статью C++11 потоки, блокировки и переменные состояния для лучшего понимания подводных камней и решений.