Алгоритм, шаблон или лучшие практики для маршалинга и ожидания во множестве взаимозависимых потоков?

0

Я разрабатываю программу (C++), которая во время выполнения запроса может использовать несколько потоков, некоторые из которых будут зависеть от других потоков, запущенных самим собой или другого потока в этом процессе запроса. Определение того, существует ли конкретный поток, зависит от конкретных параметров, передаваемых потоку, и это часть данных потоков в списке активных потоков. Индивидуальные потоки могут быстро завершаться, тогда как другие могут занимать много времени.

Чтобы предотвратить попытку изобретать колесо, существует ли какой-то алгоритм, шаблон или наилучшая практика для обработки маршалинга и ожидания нескольких взаимозависимых потоков?

Теги:
multithreading
algorithm
design-patterns

1 ответ

1
Лучший ответ

Возможно, вам стоит взглянуть на фьючерсы и обещания, а также на интерфейс асинхронной оболочки на С++ 11.

Обещания позволяют получить результат.

Фьючерсы позволяют ждать результата.

Таким образом, вы можете выразить множество зависимостей вычислений между потоками, и поскольку каждый потребитель ждет должным образом для своего производителя (который сам может быть снова потребителем), во многих случаях зависимости сами определяют себя автоматически, если вы принимаете забота.

Больше информации:
Вопрос о фьючерсах и обещаниях
Очень хорошее объяснение
Блог-запись о "сломанных обещаниях" (- Bartosz Milewski)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню