首页 > 其他 > 详细

go并发编程-协程

时间:2021-04-13 17:12:55      阅读:25      评论:0      收藏:0      [点我收藏+]

协程间通信 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)

 

go并发编程-协程

原文:https://www.cnblogs.com/fly-fly-fly-fly/p/14652812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!