У меня есть программа c ++, которая оценивает мои данные. Программа обращается к датчику, рассчитывает выход и записывает его. Это также прекрасно работает.
Теперь я хочу использовать 8 датчиков одновременно. Я использую данные с жесткого диска для теста, поэтому датчик не подключен. Когда я запускаю программу (.exe) 8 раз параллельно, она прекрасно работает. Также нет снижения производительности, и FPS такой же, как и при запуске только одной программы.
Так что я подумал, что буду использовать класс потока. И создать 8 потоков, в которые я добавляю экземпляр 8 раз. К сожалению, программа аварийно завершает работу, потому что любой указатель является пустым указателем или FPS полностью разрушается. Если я создам только один поток, он будет работать снова. Часть моего кода написана на CUDA, это может быть проблемой? Какие еще варианты мне нужно запустить программу 8 раз, потому что аппаратное обеспечение работает умеренно.
Программа полностью независима и в настоящее время не обменивается данными друг с другом.
worker w1= worker(1);
std::thread work1(w1);
worker w2= worker(2);
std::thread work2(w2);
worker w3= worker(3);
std::thread work3(w3);
...
worker w8= worker(8);
std::thread work8(w8);
work1.join();
work2.join();
work3.join();
...
work8.join();