c ++ программа запускается 8 раз параллельно - PullRequest
1 голос
/ 23 апреля 2020

У меня есть программа 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...