Обновить

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

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3K
Всего голосов 11: ↑11 и ↓0+11
Комментарии6

Комментарии 6

Не большой знаток гошки, но кажется там исповедуется другой подход, каналы, где синхронизация отсутствует, мьютексы и локи не нужны.

В джава конкеренси аналогично ее нет и во флаксе.

Даже в ваших примерах все сделано на атомарных операциях сравнения.

Даже ос, насколько я знаю, в ее реализации блокировки на мьютексе имеет альтернативу, чуть покружиться в цикле ожидания ресурса без реальной блокировки, что часто дешевле, чем входить в блокировку, когда ресурс никому больше и не нужен

Здрааствуйте! Вы всё верно подметили. От себя скажу - всё это будет во второй части, когда мы будем уже делать "взрослый mutex". 1ю часть я задумывал как введение, чтобы плавно показать как написать простой примитиа синхронизации, показать его плюсы и минусы, и дальше его улучшать.

Чтобы после прочтения всех частей читатель не только знал как устроен мьютекс но и отчетливо понимал почему он такой.

В каналах, кстати, используются мьютексы

Отличная статья!

Спасибо🔥

а также разобраться с популярными проблемами возникающими при написании многопоточных программ.

А можно (даже надо бы) перечислить эти "популярные проблемы", т.е. более четко конкретизировать поставленную задачу?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации