你的意思是這樣的嗎?
package main
import "fmt"
func ping(recv <-chan int, send chan<- int, end chan<- bool) {
fmt.Println("ping")
send <- 11
send <- 12
r1 := <-recv
r2 := <-recv
fmt.Println("ping", r1, r2)
end <- true
}
func pong(recv <-chan int, send chan<- int, end chan<- bool) {
fmt.Println("pong")
r1 := <-recv
r2 := <-recv
send <- 21
send <- 22
fmt.Println("pong", r1, r2)
end <- true
}
func main() {
chEnd := make(chan bool)
chPing := make(chan int, 2)
chPong := make(chan int, 2)
go ping(chPing, chPong, chEnd)
go pong(chPong, chPing, chEnd)
<-chEnd
<-chEnd
fmt.Println("end")
}
輸出:
ping
pong
pong 11 12
ping 21 22
end
我已經使用常數BUFSIZE = 10個C:=使(CHAN INT,BUFSIZE)。但是,我想鎖定例程2,直到例程1發送完成。 – Arpssss
嘗試查看標準庫中的同步軟件包。 –