Обнаружение полного буферизованного канала
в go, буферированные каналы имеют максимальный предел емкости. Когда буферный канал достигает своей емкости, отправка дополнительных элементов в него обычно приводит к блокировке операции. Однако существуют ситуации, в которых вы можете предпочесть бросить элементы вместо блокировки.
, используя оператор SELECT с помощью Default
один способ определить, заполнен ли буферный канал - использовать оператор SELECT с пунктом по умолчанию. Вот пример:
package main import "fmt" func main() { ch := make(chan int, 1) // Fill it up chВ этом примере оператор SELECT имеет два случая:
проверка размер канала
Другой метод обнаружения полного канала - проверить его размер, используя Len (CH) и сравнить его с его емкостью с помощью CAP (CH). // канал был заполнен, но, возможно, не будет к настоящему времени } еще { // канал не был заполнен, но, возможно, к настоящему времени }Channel full. Discarding valueОбратите внимание, что этот подход не гарантирует, что результат будет действительным к моменту введена блока IF из -за возможности активности канала между проверкой размера и оператором IF.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3