Повторное выполнение резьбового packaged_task - PullRequest
0 голосов
/ 02 июля 2019

Я новичок в 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 объект в потоках?

...