170 похожих чатов

А разве атомики вообще преследуют цели производительности? Мне казалось что

они созданы исключительно для решения проблем синхронизации. Вдруг там та уровне hardware выполняются те же операции?

17 ответов

15 просмотров

Ну проблемы синхронизации можно решать 1. через каналы 2. sync.Mutex, sync.WaitGroup 3. атомики Можно выбирать более производительный и читабельный вариант PS. Атомики только для атомарных операций

Anton-Kucherov Автор вопроса
Алексей Долгов
Ну проблемы синхронизации можно решать 1. через ка...

Я конечно не эксперт, но кажется первые построены на вторых, а вторые на третьих. А 3-е собственно реализованы на уровне железа. Как одна атомарная команда, которая выполняет несколько операций. 🤔 Или я что-то путаю?

Anton-Kucherov Автор вопроса
Пользователь 617d5
не путаешь

Получается "ускорение" операции достигается только за счет того, что не тратится время на считывание нескольких команд?

Anton Kucherov
Я конечно не эксперт, но кажется первые построены ...

можно еще делать монопольные блокировки без мьютексов😅 sema = make(chan struct{}, 1) ... sema <- struct{} balance++ <-sema

Anton-Kucherov Автор вопроса
Алексей Долгов
можно еще делать монопольные блокировки без мьютек...

Так канал это же структура с мьютексом внутри.

Anton Kucherov
Так канал это же структура с мьютексом внутри.

почему кстати для большого кол-ва горутин каналы лучше чем мьютексы?

Anton-Kucherov Автор вопроса
Boris
почему кстати для большого кол-ва горутин каналы л...

Я не знаю. Но вот тут: https://golang.org/src/runtime/chan.go явно мьютекс. Я ж говорю я не эксперт.

Boris
почему кстати для большого кол-ва горутин каналы л...

из-за паттерна доступа к данным + влияние GC на содержимое в канале (точнее отсутствие влияния)

Roman Timofeev
почему лучше?

Каналы более читаемый и классический вариант и рекомендуемый насколько я понимаю

Roman Timofeev
почему лучше?

все зависит от числа горутин одновременно работающих с примитивом синхронизации

Алексей Долгов
Каналы более читаемый и классический вариант и рек...

было же исследование про число ошибок использования mutex vs channel и на каналах люди делают ошибки чаще.

Roman Timofeev
было же исследование про число ошибок использовани...

о, вкупе с каким-то ограничением (например пул соединений) это эпический источник багов, все три драйвера для postgres мне известных когда-то налетали на такое

Владимир Столяров
о, вкупе с каким-то ограничением (например пул сое...

можно еще их смешать с sync.Cond, который требует Locker и будет праздник дедлоков )

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта