28.蛤蟆笔记go语言——并发简单示例

notbaron · · 1029 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

28.蛤蟆笔记go语言——并发简单示例

并发示例

package main

import (

         "fmt"

         "time"

)

func ready(w string, sec int64) {

         secs :=time.Duration(sec) * time.Second

         time.Sleep(secs)

         fmt.Println(w,"is ready!")

}

func main() {

         goready("Tee", 2)

         goready("Coffee", 1)

         fmt.Println("I'mwaiting")

         secs :=time.Duration(2) * time.Second

         time.Sleep(5* secs)

}

输出:

         I'mwaiting

         Coffeeis ready!

         Teeis ready!

 

Go语法特点

没有共享内存,更没有内存锁,并发靠语言自带的 goroutines

goroutines 之间的通信靠语⾔自带的 channels 来传递消息

总之,这⼀切都有利于简单地编写安全的并发程序。

 

并行计算

代码:

package main

 

import "fmt"

 

func sum(values []int, resultChan chan int) {

         sum :=0

         for _,value := range values {

                   sum+= value

         }

         resultChan<- sum // 将计算结果发送到channel

}

 

func main() {

         values:= []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

 

         resultChan:= make(chan int, 2)

         gosum(values[:len(values)/2], resultChan)

         gosum(values[len(values)/2:], resultChan)

         sum1,sum2 := <-resultChan, <-resultChan // 接收结果

 

         fmt.Println("Result:",sum1, sum2, sum1+sum2)

}

执行结果

Result: 40 15 55

 

 

 


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:notbaron

查看原文:28.蛤蟆笔记go语言——并发简单示例

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1029 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传