チャンネル内のgolang排尿

  • チャネル自体は、キューデータ構造であり、
  • データFIFO
  • 自体チャンネルは、スレッドセーフであります
  • チャネルの種類があり、チャネルは、文字列型構造の文字列のみを保持することができます
  • チャネルデータ型はを利用するために必要への参照であります
  • パイプラインにデータを書き込むと、その容量を超えないようにしてください
  • チャネルが閉じているときは、書き込みデータを内部に見て、データを読み取ることができない問題はありません
  • 範囲のために使用することができますしてパイプラインを通過するが、最初のクローズクローズドチャンネル

ファイル

実施例1:
データが書き込まれ、書き込まれたwriteChanを開く
readChanを開くためには、データを読み出す
読み出しおよびフェッチ動作は同じAチャンネル導管である
読み取り、書き込みがメインスレッドが完了した後のように起動します

/**
 * @Author: v_bivwei
 * @Description:
 * @Date: 2020/1/19 17:25
 */
package main

import "fmt"

func writeData(intChan chan int) {
	for i := 1; i <= 50; i++ {
		intChan <- i
		fmt.Println("writeData i= ", i)
	}
	close(intChan)
}

func readData(intChan chan int, exitChan chan bool) {
	for {
		v, ok := <-intChan
		if !ok {
			break
		}
		fmt.Println("readData v =", v)
	}
	exitChan <- true
	close(exitChan)
}

func main() {
	intChan := make(chan int, 10)
	exitChan := make(chan bool, 1)

	go writeData(intChan)
	go readData(intChan, exitChan)

	for {
		_, ok := <-exitChan
		if !ok {
			break
		}
	}

	fmt.Println("结束了")
}
公開された145元の記事 ウォン称賛24 ビュー120 000 +

おすすめ

転載: blog.csdn.net/xiaobinqt/article/details/104072970