私はGO
グーグルから初めてです。バッファリングされたチャネルには、次のプログラムがあります。
package main
import "fmt"
import "time"
func main() {
c := make(chan int, 2)
c <- 1
fmt.Println(<-c)
time.Sleep(1000 * time.Millisecond)
c <- 2
fmt.Println(<-c)
}
出力を生成します。しかし、http://tour.golang.org/#64によると、次のように述べています。
バッファがいっぱいの場合にのみ、バッファされたチャネルブロックに送信します。バッファが空のときにブロックを受け取ります。
それが言うように、それはFULLのときにのみ送信します。なぜプログラムc
は最初のステートメントでいっぱいになるのを無限に待つのではなく、出力を生成するのですか。?
チャネルのバッファサイズは2です。1つのintを入れてから、1つのintを引き出します。次に、あなたは眠り、プロセスを繰り返します。整数を引き出さずに3番目の整数を挿入しようとするまで、チャネルはブロックされません。最初の2つのintはバッファリングされます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加