Комментарии 6
Не большой знаток гошки, но кажется там исповедуется другой подход, каналы, где синхронизация отсутствует, мьютексы и локи не нужны.
В джава конкеренси аналогично ее нет и во флаксе.
Даже в ваших примерах все сделано на атомарных операциях сравнения.
Даже ос, насколько я знаю, в ее реализации блокировки на мьютексе имеет альтернативу, чуть покружиться в цикле ожидания ресурса без реальной блокировки, что часто дешевле, чем входить в блокировку, когда ресурс никому больше и не нужен
Здрааствуйте! Вы всё верно подметили. От себя скажу - всё это будет во второй части, когда мы будем уже делать "взрослый mutex". 1ю часть я задумывал как введение, чтобы плавно показать как написать простой примитиа синхронизации, показать его плюсы и минусы, и дальше его улучшать.
Чтобы после прочтения всех частей читатель не только знал как устроен мьютекс но и отчетливо понимал почему он такой.
В каналах, кстати, используются мьютексы
Отличная статья!
а также разобраться с популярными проблемами возникающими при написании многопоточных программ.
А можно (даже надо бы) перечислить эти "популярные проблемы", т.е. более четко конкретизировать поставленную задачу?

Concurrency на примерах. Собственная реализация Mutex на Go + сравнение с sync.Mutex. Часть 1