tgoop.com/go_interview_lib/530
Last Update:
💬 Назовите кейсы, в которых sync.Cond может быть более подходящим выбором, чем каналы?
1. С каналом мы можем либо отправить сигнал одной горутине, отправив значение, либо уведомить все горутины, закрыв канал, но мы не можем сделать и то, и другое. sync.Cond
предоставляет более детальный контроль. Мы можем вызвать Signal()
, чтобы запустить отдельную горутину, или Broadcast()
чтобы разбудить их все.
2. И мы можем вызывать Broadcast()
столько раз, сколько нужно, чего каналы не могут делать, когда они закрыты (закрытие закрытого канала вызовет панику).
3. Каналы не предоставляют встроенного способа защиты shared данных — нам нужно будет управлять этим отдельно с помощью мьютекса. sync.Cond
, с другой стороны, предлагает более комплексный подход, объединяя блокировку и сигнализацию в одном пакете (и повышая производительность).
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/530