Тогда почему отрицаете на заявление о немасштабируемости. Да немасштабируемая дырявая реализация. Но на десяти запросов в секунду всех все устраивает - так и скажите)
Если их не сотни тысяч, то хватит и семафора тогда, в остальных случаях лучше асинхронно. При том у вас появляется контроль. Вот висит у вас клиент ждёт, процесс выполняется, у вас отваливается клиент, работа выполнена зря.
семафор это хорошее решение, если количество воркеров в пуле неизменно, но так тоже не вседа бывает
А кто сказал, что работа долгая? Я писал про ограничение на количество одновременных выполнений. Ни про нагрузку ни про её суть я не писал. Но почему-то некоторые считают своим долгом дать совет как сделать лучше, предпологая какую-то дополнительную функциональность от себя
Семафор с весами.
Семафор. Проще читается, чем лапша из гоняемых туда сюда каналов.
как он поможет при увеличении пула?
Уменьшаете вес задачи.
вы считаете что считать веса проще чем записать в канал?
А чего их считать. Гугловская либа есть готовая.
"golang.org/x/sync/semaphore" эта?
Примерчик будет или на слово поверим?
так там тот же канал
Он создаётся не всегда, выполняет сигнальную функцию. Но не в этом суть, код остаётся линейным и читаемым.
если так же спрятать работу с каналами в методы, то код тоже останется читаемым
Обсуждают сегодня