Стандартный C++ статус транзакционной памяти

Каково текущее состояние предложения транзакционной памяти для C++17. Будет ли он включен в стандарт, нацелен ли он на включение в какую-то будущую версию стандарта C++, или это всего лишь экспериментальная функция проверки концепции, статус стандартизации которой до сих пор не определен?

Я спрашиваю, потому что некоторые документы комитета по стандартизации, кажется, дают противоречивую информацию здесь. С одной стороны, у нас есть P0265R0 ( http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0265r0.pdf) о том, что транзакционная память не будет стандартизирована, с другой рука - есть статья N4492 от Страуструпа ( http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4492.pdf) с транзакционной памятью, перечисленной в списке функций C++17.

1 ответ

Решение

Достаточно коротко: транзакционная память TS уже опубликована, а вторая версия разрабатывается. Однако комитет не планирует включать его в стандарт в ближайшем выпуске. Есть несколько причин для этого выбора:

  • Не хватает опыта внедрения. Только g++ реализует это начиная с GCC6. Цель TS заключается в том, чтобы частично собрать реализацию и пользовательский опыт, поэтому такая большая функция все еще слишком "незрелая" в этом отношении.

  • Не каждая цель поддерживает транзакционную память, и имеет высокую стоимость реализации, в то время как не всем это нужно. По этим причинам комитет, по-видимому, не уверен, должен ли TS вообще быть частью основного стандарта C++. С таким же успехом он может жить как TS.

  • Более того, не все считают, что каждая функция транзакционной памяти TS заслуживает включения в основной стандарт C++. Некоторые считают, что synchronized это главная особенность, в то время как другие полагают, что атомные блоки - реальное изменение игры. TS добавляет еще одну когнитивную нагрузку, с которой придется столкнуться разработчикам библиотек (а также нескольким новым ключевым словам, что, как правило, не очень хорошо).

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