❓Как реализовать приоритет между каналами, если select выбирает случайно
Одно из важных свойств select в Go — рандомность выбора, если сразу несколько каналов готовы к операции.
select { case msg := <-ch1: fmt.Println("ch1:", msg) case msg := <-ch2: fmt.Println("ch2:", msg) }
Если и ch1, и ch2 доступны — Go случайным образом выберет один case. Это исключает жёсткий приоритет каналов и распределяет нагрузку справедливо (не детерминированно).
Это нужно для предотвращения "голодания" менее приоритетных каналов, также это позволяет реализовать честные очереди и worker pool без ручного балансировщика
❓Как реализовать приоритет между каналами, если select выбирает случайно
Одно из важных свойств select в Go — рандомность выбора, если сразу несколько каналов готовы к операции.
select { case msg := <-ch1: fmt.Println("ch1:", msg) case msg := <-ch2: fmt.Println("ch2:", msg) }
Если и ch1, и ch2 доступны — Go случайным образом выберет один case. Это исключает жёсткий приоритет каналов и распределяет нагрузку справедливо (не детерминированно).
Это нужно для предотвращения "голодания" менее приоритетных каналов, также это позволяет реализовать честные очереди и worker pool без ручного балансировщика
SUCK Channel Telegram 4How to customize a Telegram channel? A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.”
from us