var wg sync.WaitGroup
func hello(){
printLn("hello")
wg.Done()
}
func main(){
wg.Add(1) 派几个人去干
go hello()
wg.Wait()
}
var 变量 chan 元素类型 //声明通道类型 chan 是关键字
ch1:=make(chan int,num) //num是个数字,定义有几个值,可以省略
ch2:=make(chan bool)
ch3:=make(chan []int)
ch:=make(chan int)
将一个值发送到通道中
ch <- 10
接受 接受通道中的值
x:= <-ch
关闭 //不是必须的
close(ch)
func f1(ch chan int){
for i:=0;i<100;i++{
ch<-i
}
close(ch)
}
func f2(ch1 chan int,ch2 chan int){
for {
tmp,ok:=<-ch1
if !ok{
break
}
ch2 <- tmp*tmp //将平方值赋给ch2
}
}
func main(){
ch1:=make(chan int,100)
ch2:=make(chan int , 100)
go f1(ch1)
go f2(ch1,ch2)
for ret:=range ch2{
println(ret)
}
}
func f1(ch1 chan<- int){} 只能发送到 ch1
func f2(ch2 <-chan int) 只能 在ch2里取值
var lock sync.Mutex 互斥锁
lock.lock()
x=x+1
lock.Unlock()
var lock sync.RWMutex 读写互斥锁
lock.Rlock() 读的时候不排斥读锁,但排斥其他锁
lockUnRlock()