Разбор задач с собеседования по Go

preview_player
Показать описание


Рекомендации по теме
Комментарии
Автор

Ну наконец то вышло видео, а то я не успел все посмотреть. Подача - отлично, объяснение - отлично, всё - отлично! Берем весла - гребем дальше! Только вперед!

nikolaykozlov
Автор

37:40 по мне не совсем корректное решение. Мы вычитаем значение только из 1 канала и пойдём дальше. В качестве решения можно запустить for range по joinChannels(), а в функции worker() после передачи значения в канал закрывать его и не получить deadlock.

gerojstalnoj
Автор

09:09 к сути дела для тех, кто уже в курсе про менторскую программу и крутой онлайн-редактор кода для собесов 😉

alexsunstrider
Автор

Мне нравится фраза, ну мы "не хотим лочится". И поэтому мы используем кучу каналов и груп внутри которых мьютексы.)

bigtown
Автор

21:50 так ведь с локом теряется конкурентность, нет?

gregory._
Автор

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

ventilyator
Автор

Интересный у вас кеш… пользователи спят, эндпоинт никто не дергает, а у вас каждую секунду выполняется нагрев атмосферы 😂

Gusto
Автор

зачем же так сложно про мьютекс?) Есть 2 состояния: locked = 1, unlocked = 2. Лок через compareAndSwap, анлок через атомик сет. Фсьо

АлександрЛобов-юж
Автор

И это, пореже пользуйте копайлотом, а то так и будете такие кэши писать😉

bigtown
Автор

Немного осмыслив ваш кэш могу сделать следующие выводы. Очень удручает что GOшники начали писать как JSкриптеры. Мьютексы не нужно использовать, если можно использовать атомик, не надо использовать атомик, если можно его не использовать. В вашем случае не нужно использовать ни первое, ни второе. Кэш вашего типа подразумевает получение неактуального значения. У вас один писатель и множество читателей. Атомик это просто инструкция процессора с LOCK префиксом, которая запирает шину памяти на время её выполнения. Поскольку в вашей программе используется всего одна переменная типа int, запись этого числа сама по себе атомарна, нельзя записать полинта. Если же у вас сложная структура, то нужно писать в буферную структуру, а затем менять указатели. И в этом случае у вас так же будут консистентные данные.

bigtown
Автор

Лучше про зарплаты расскажите, для мотивации апать скиллы, так сказать :)

devracoon