私のプログラムがデッドロックしている状況にあり、これをデバッグして、バッファされていないチャンネルにいくつの要素があるかを知りたい場合、Go ?次のコードは、出力は私が(さらに、それはまた、私は理由を見つけることができない何かである、デッドロック)予想通り2バッファされていないチャンネルの要素数を取得する方法
package main
import "fmt"
func main() {
channel := make(chan string)
done_channel := make(chan bool)
go func() {
channel <- "value"
channel <- "value"
fmt.Println(len(channel))
done_channel <- true
}()
variable := <- channel
fmt.Println(variable)
ok := <- done_channel
fmt.Println(ok)
}
バッファされていないチャネルには要素が含まれていないため、バッファされません。 – JimB
@JimB私はチャネル上で無限にブロックされている状況にあります。これをデバッグして、コードにステップインする際に要素がチャネルに送信されたように見えるため、チャネルに何かがあるかどうかを確認したい私はこれをどうお勧めしますか? – Curious
@ JimBしかし、チャンネルから値を取るときは、永久にブロックする前に入れられた値の正確な数を得ることができるので、内部的にいくつかの値が格納されている必要がありますか? – Curious