バッファー付きチャンネル
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
【バッファー付きチャンネルの利点】
複数のデーターを送受信するときに、バッファー付きチャンネルを利用すると良い
【バッファー付きチャンネルの作成】
make()を使って作る。
・例文
// make関数を使用してchannelとしての機能を持たせる
// bool型でバッファサイズは「3」を指定する。、
done := make(chan bool,3)
作成されるチャンネルは非同期です
・サンプルコード
//buffer.go
package main
import (
"fmt"
"time"
)
func main(){
//チャンネルを作る
// bool型でバッファサイズは「3」を指定する
done := make(chan bool, 3)
//ゴルーチンで"+"を出力する
go func () {
for i := 0; i < 10; i++ {
time.Sleep(10 * time.Millisecond)
fmt.Printf("+")
}
done <- true //終わったらtrueを送る
}()
//ゴルーチンで"-"を出力する
go func () {
for i := 0; i < 9; i++ {
time.Sleep(9 * time.Millisecond)
fmt.Printf("-")
}
done <- true //終わったらtrueを送る
}()
//ゴルーチンで""を出力する
go func () {
for i := 0; i < 10; i++ {
time.Sleep(10 * time.Millisecond)
fmt.Printf("")
}
done <- true //終わったらtrueを送る
}()
//ゴルーチンで"/"を出力する
for i := 0; i < 10; i++ {
fmt.Printf("/")
time.Sleep(5 * time.Millisecond)
}
for i := 0; i < 3; i++ {
<-done //trueが送られるのを待って受け取る
}
}
・実行
PS D:\GO言語\サンプルプログラム\Go-8> go run buffer.go
//+-\+/\-\-/++-/\+-/\\-/+\-/+\-/++-\/\+