Почему C ++ не имеет std :: thread_pool в стандартной библиотеке? - PullRequest
4 голосов
/ 09 ноября 2019

Мне просто кажется странным, что, несмотря на очень большой набор конструкций для многопоточности, в стандарте отсутствует класс пула потоков. Какие причины могут отговорить комитет от добавления этого стандарта?

1 Ответ

0 голосов
/ 09 ноября 2019

C ++, как и C, предназначен для обеспечения максимально возможного контроля программиста. Почти все в C ++ является оберткой, которая очень проста. Это дает программисту свободу реализовывать любые функции, которые они хотят, как они хотят.

Понятие «что есть работа» немного абстрактно и зависит от варианта использования, поэтому C ++ дает вам рабочих (потоков),и позволяет вам определить стратегию того, как вы хотите, чтобы эта работа распределялась среди рабочих.

Например, в Python вы можете отобразить работу на потоки. Использование этого означает, что всякий раз, когда работа доступна, поток берет на себя работу. Но что, если вы хотите, чтобы поток выполнял работу только в том случае, если есть работа И после выполнения определенных условий. Вы можете создать свой класс thread_pool для соответствия всем этим спецификациям. В Python вам придется обрабатывать эти проверки отдельно вне библиотеки пула потоков.

Хотя официального ответа нет, этот ответ, я бы сказал, имеет больше смысла. C ++ подразумевает контроль, учитывая минимальное количество инструментов (однако расширенный набор по сравнению с C). Комитет, скорее всего, не добавляет класс thread_pool, потому что самое сложное в компьютерной науке - заставить людей согласиться. Пул потоков не обязательно чрезвычайно сложен для реализации, и определение определения работника, возможно, труднее.

...