Я новичок в C ++ 11 потоковых утилит. Чтобы выполнить алгоритм, построенный из нескольких блоков, я решил использовать комбинацию std::packaged_task
вокруг моих блоков, std::future
для синхронизации всего и std::thread
для обеспечения многопоточности. Мой схематизированный алгоритм:
PrepareData0 --> ProcessData0 --> InterpretData0 |
--> InterpretGlobal
PrepareData1 --> ProcessData1 --> InterpretData1 |
Поскольку это должен быть неостанавливаемый цикл обработки видео, вывод с веб-камеры ... Я пытаюсь создавать свои задачи только один раз и повторно использовать их после сброса их состояния, используя метод std::packaged_task::reset
. Но, похоже, с std::future_error
не получится. Единственный выбор, который у меня есть на данный момент, - перестраивать мои задачи каждый раз, когда я хочу запустить свой алгоритм.
Мне кажется, это немного излишне. Есть ли простой способ повторно использовать уже инициализированный std::packaged_task
объект в потоках?