Обновить

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

Мне кажется вы тёплое с мягким сравниваете. Лично я использую atomic чаще всего, когда мне нужно чаще получать безопасно какую-то структуру, которую в процессе может захотеть меня какой-то другой поток. Кажется это самый оптимальный сценарий, потому что блокировать ничего не надо, нужно получать текущий рабочий участок памяти.

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

Сравнивать их, особенно в одном сценарии даже глупо. У них философия работы вообще разная.

Разумеется философия работы разная. В этом и суть этой статьи, чтобы конкретно сказать что и в каких ситуациях использовать.

Ну изначально посыл статьи даже с заголовка идёт не про "когда использовать", а "кто быстрее". Это и проблема. Если бы было сравнение "когда уместнее", то ещё нормально.

Но в целом вернусь к изначальному тезису: сравниваете тёплое с мягким. Это две разные технологии. Их связывает только использование в конкурентной среде. Но с таким же успехом можно написать статью: "Когда redis все же быстрее mutex".

Добрый день ! На мой взгляд получилось как-то воденисто. Не хватило вывода по бенчмарку представленному: он, конечно, понятен, но, опять же на мой взгляд, не хватает структурированности что ли. Также не хватило большей вариативности тестов(разные условия, входные данные, операции, мб что-то в runtime покрутить). Как бы то ни было - спасибо за статью !

Спасибо за ваш комментарий! Подобный формат теста выбирал исходя из соображения простоты и наглядности, но в следующей статье попробую написать больше

Использовать sync.Mutex рентабельно, когда:
...
Критическая секция содержит вызовы функций, I/O, аллокации

Я соглашусь, что тут Mutex брать правильно. Но, статья у нас Atomic vs Mutex. И, если честно, то я даже не представляю как в этой ситуации можно выбирать между Atomic и Mutex. Потому что я не понимаю, каким боком тут можно применить Atomic.

Хотя, может статья была задумана не как именно Atomic vs Mutex.А просто вводная про них обоих. Но, это не очевидно из заголовка и вступления.

Добавлю, что заголовок "Когда atomic действительно быстрее Mutex" подразумевает, что иногда бывает и не быстрее. Но вот ни таких примеров, ни выводов вида "атомик всегда сильно быстрее". Только один небольшой тест, показывающий, что вот в этом конкретном случае атомик лучше.

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

Публикации