Почему std::thread не имеет базовых возможностей?
В std::thread
:
- Нет размера стека при создании потока.
- Нет приоритетов потоков.
Зачем? Какая польза от такого API?
Это самая основа концепции потока.
Размер стека, почему мы не заботимся о памяти? Может быть, авторы предполагают только Linux и Windows с страничной памятью и 64-битным адресным пространством, но как быть с платформами без страничной памяти?
Приоритеты, как сделать любую систему с предсказуемым временем без приоритетов?
2 ответа
Потому что каждая платформа должна предоставлять API. У вас все еще может быть реализация C++, предназначенная для платформы, которая не имеет потоков.
Потому что "стек" - это деталь реализации. Что значит увеличить размер чего-то, что не обязательно существует?
Что значит изменить приоритет, когда нет приоритета?
C++ предназначается для абстрактной машины. Реализация отображает эту абстрактную машину на целевую машину (которая сама может быть абстрактной). Стандарт очень старается не ограничивать реализации в областях, которые ему не нужны.
Какие std::thread
действительно обеспечивает (чрезвычайно определенная реализация) native_handle
, Это полностью разрешает вам делать определенные вещи реализацией определенными способами.
Нет размера стека при создании потока.
Где в стандарте C++ вы должны иметь даже стек на вашей машине? AFAICR (и я не очень разбираюсь в этом, заметьте) - никуда.
Нет приоритетов потоков.
Где в стандарте C++ ваша машина должна иметь приоритеты потоков? На самом деле, я сомневаюсь, что вам даже нужно иметь какую-либо аппаратную поддержку, чтобы потоки были целевой платформой для C++.
Зачем? Какая польза от такого API?
Как указывает @HansPassant, различные организации, в том числе поставщики оборудования, разработчики компиляторов и разработчики операционных систем, участвуют в рассмотрении и комментировании предложений по языковым стандартам, прямо и косвенно. Чем меньше вы вставляете API и тем меньше предполагаете, что аппаратное обеспечение предоставляет, тем легче будет принять предложенное дополнение к языку (будь то большинством голосов, консенсусом или чем-то более сложным).