многопоточная очередь задач c ++ для запланированных задач - PullRequest
1 голос
/ 18 июля 2010

Мне нужно разработать модуль, который будет выполнять запланированные задачи.
Каждое задание планируется выполнить в течение X миллисекунд.

Модуль принимает в качестве параметра количество рабочих потоков для выполнения задач.

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

Есть ли какая-нибудь публичная библиотека, которая делает это, или я должен свернуть свою собственную?

Примечание. Я использую VC2008 в Windows.

Ответы [ 3 ]

5 голосов
/ 18 июля 2010

Если вы не возражаете против зависимости Boost, threadpool может соответствовать вашим потребностям.

3 голосов
/ 18 июля 2010
1 голос
/ 19 июля 2010

Просто для того, чтобы добавить немного информации к вашему вопросу, вам нужен планировщик в реальном времени, который использует алгоритм Самый ранний срок подачи заявок . Также обратите внимание, что без поддержки ОС, вы не можете гарантировать, что ваша программа будет работать в течение указанного вами X-миллисекундного срока. ОС всегда может решить поменять задачу со своего ЦП в середине работы, что потребует непредсказуемо долгого времени для выполнения.

Если ваше приложение критически зависит от задачи, выполняемой за X миллисекунд, которые вы для него установили (или что-то взорвалось), вам нужно будет запустить операционную систему реального времени , а не обычную Окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...