go并发编程-协程

协程间通信 2中方式  共享内存 和  消息传递

package main

import (

  "fmt"

  "runtime"

  "sync"

)

var counter  int = 0

func add(a,b  int, lock *sync.Mutex) {

  c : = a + b

  lock.Lock()   //Lock  加锁       Unlock  解锁

  counter ++

  fmt.Printf("%d:%d=%d+%d",counter,c,a,b)

  lock.Unlock()

}  //     sync.Mutex     go提供的互斥锁

 

通过channel进行消息传递

channel 是一种数据类型  本身是并发安全的  使用它在多个goroutine 直接传递消息  不必担心通道中的值被污染

使用通道 使用make  进行声明    chan  是关键字

一个通道只能传递一种类型的值

ch  : =  make(chan int)  //初始化一个通道类型 ch   其中只能传递 int  类型的值

通道可以看做一个先进先出的队列     通过   <-   

ch  <- 1   //把元素1发送到通道 ch

接收

params  :=  <- ch //params接收通道值

留空 表示 忽略       <-ch

 

package main

import (

"fmt"

"time"

)

func add(a,b int,ch chan int)

 

posted @ 2021-04-13 13:34  fly_fly_fly#  阅读(55)  评论(0编辑  收藏  举报