gpt4 book ai didi

go - 有没有办法知道 channel 缓冲区中有多少消息?

转载 作者:IT王子 更新时间:2023-10-29 01:17:17 28 4
gpt4 key购买 nike

我在我的程序中发现了一个瓶颈,它是一个缓冲 channel 。我想向客户端提供系统负载指示,该指示应由 channel 中缓冲的消息数指示。

Go 有没有办法知道一个通​​道中有多少缓冲消息?

如果您也有 Java 背景,我正在寻找类似的工具:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/LinkedBlockingQueue.html#size()

最佳答案

Length and capacity

The built-in functions len and cap take arguments of various types and return a result of type int. The implementation guarantees that the result always fits into an int.

Call      Argument type    Result

len(s) chan T number of elements queued in channel buffer

cap(s) chan T channel buffer capacity

channel 的 len 函数给出 channel 缓冲区中排队的元素数。例如,

package main

import "fmt"

func main() {
ch := make(chan int, 8)
ch <- 42
ch <- 7
<-ch
ch <- 64
// number of queued elements = 1 + 1 - 1 + 1 = 2
fmt.Println(len(ch), cap(ch))
}

输出:

2 8

关于go - 有没有办法知道 channel 缓冲区中有多少消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016572/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com