- package main
-
- import (
- "fmt"
- "sync"
- //"time"
- )
- var wg sync.WaitGroup
- func writeData(intchan chan int){
- defer wg.Done()
- for i := 1; i <= 9; i++ {
- intchan<-i
- fmt.Println("写入的数据为:",i)
- //time.Sleep(time.Second)
-
- }
- close(intchan)
- }
- func readData( intchan chan int) {
- defer wg.Done()
- for value := range intchan {
- fmt.Println("读取的数据为",value)
- }
- }
-
-
-
- func main() {
- intchan := make(chan int ,10)
- wg.Add(1)
-
- go writeData(intchan)
- //go readData(intchan)
-
-
- wg.Wait()
-
-
-
- }
- package main
-
- import (
- "fmt"
- "sync"
- //"time"
- )
- var wg sync.WaitGroup
- func writeData(intchan chan int){
- defer wg.Done()
- for i := 1; i <= 10; i++ {
- intchan<-i
- fmt.Println("写入的数据为:",i)
- //time.Sleep(time.Second)
-
- }
- close(intchan)
- }
- func readData( intchan chan int) {
- defer wg.Done()
- for value := range intchan {
- fmt.Println("读取的数据为",value)
- }
- }
-
-
-
- func main() {
- intchan := make(chan int ,10)
- wg.Add(2)
-
- go writeData(intchan)
- //go readData(intchan)
-
-
- wg.Wait()
-
-
-
- }
但是这里面wg.Add(2)主从协程我没明白。我起一个的时候是不会阻塞的,起两个会。跟容量就没关系,只要不读就会阻塞。
读写频率不同,也是可以,有读就不会阻塞