Почему std::thread не имеет базовых возможностей?

В std::thread:

  • Нет размера стека при создании потока.
  • Нет приоритетов потоков.

Зачем? Какая польза от такого API?

Это самая основа концепции потока.

Размер стека, почему мы не заботимся о памяти? Может быть, авторы предполагают только Linux и Windows с страничной памятью и 64-битным адресным пространством, но как быть с платформами без страничной памяти?

Приоритеты, как сделать любую систему с предсказуемым временем без приоритетов?

2 ответа

Потому что каждая платформа должна предоставлять API. У вас все еще может быть реализация C++, предназначенная для платформы, которая не имеет потоков.

Потому что "стек" - это деталь реализации. Что значит увеличить размер чего-то, что не обязательно существует?

Что значит изменить приоритет, когда нет приоритета?

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

Какие std::thread действительно обеспечивает (чрезвычайно определенная реализация) native_handle, Это полностью разрешает вам делать определенные вещи реализацией определенными способами.

Нет размера стека при создании потока.

Где в стандарте C++ вы должны иметь даже стек на вашей машине? AFAICR (и я не очень разбираюсь в этом, заметьте) - никуда.

Нет приоритетов потоков.

Где в стандарте C++ ваша машина должна иметь приоритеты потоков? На самом деле, я сомневаюсь, что вам даже нужно иметь какую-либо аппаратную поддержку, чтобы потоки были целевой платформой для C++.

Зачем? Какая польза от такого API?

Как указывает @HansPassant, различные организации, в том числе поставщики оборудования, разработчики компиляторов и разработчики операционных систем, участвуют в рассмотрении и комментировании предложений по языковым стандартам, прямо и косвенно. Чем меньше вы вставляете API и тем меньше предполагаете, что аппаратное обеспечение предоставляет, тем легче будет принять предложенное дополнение к языку (будь то большинством голосов, консенсусом или чем-то более сложным).

Другие вопросы по тегам