group-telegram.com/experimentalchill/267
Last Update:
Тут вышел доклад от человека, который стандартизировал атомарные операции в С++ про то, что он понял за 15+ лет от этого дела.
Сначала скажу, что вокруг этой темы образовалось столько элитарности, что иногда хочется закрыться, сказать, что ничего не понял, и уйти. Но кто-нибудь будет тебе рассказывать, что всё понял. Относитесь к этому со скептизмом. Если человек, который это сделал говорит, что не понимает некоторые части, не стоит верить тому, кто говорит, что понимает.
По сути: доклад достаточно самокритичный
* Показывает, что думали в 2008-2010, когда создавали. Например, тогда мультиядерные системы только появились и математические модели стали стандартом. Например, Intel до 2007 года не писала, что у них Total Store Order.
* К удивлению, большинство железок исправилось и теперь Sequentially Consistent операции стоят не сотни тактов, а единицы. И даже когда приводили в пример Arm, оказывается, что они тоже туда движутся. Разнообразие различных моделей становится всё менее важным.
* Никто не понимает memory_order_consume. Я тоже
* В какой-то степени было ошибкой класть математическую модель в стандарт. Разработчики не читают стандарт, разработчики компиляторов тоже. Получается писали только для рисерчеров. Тем не менее, какой-то формализм нужен. Открытый вопрос как это сделать для людей.
* Weak memory model теряет свои преимущества. Большинство атомарных операций это флаги, counters, кеши, намного реже lock free structures и подобное.
Ещё из забавного, примерно в это же время нашли deadlock баг в имплементации shared_mutex в кишках Windows API. С Windows Vista воспроизводится, почти уже 20 лет багу в таких примитивах.
BY Experimental chill
Share with your friend now:
group-telegram.com/experimentalchill/267