on the go way (二)channel 的用法

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

在Go语言中channel的使用方法有很多,首先来看以下的使用方法

1)当作事件信号来用,当某一件事完成之后,通知另一件事的完成

    

package main

import "fmt"

func onedream(exit chan int){
for i:=0;i<10;i++{
fmt.Println("hello ",i)
}
exit<-0

}
func main(){
var wait =make(chan int)
go onedream(wait)

<-wait
fmt.Println("this goroutine over") 
close(wait) }
 1 package main
 2 import 
 3 (
 4  "fmt"
 5  "time"   
 6 )
 7 func onedream(start ,wait chan int ){
 8     fmt.Println("等待制造数据命令中....")
 9     <-start
10     fmt.Println("开始制造数据-----")
11     for i:=0;i<10;i++{
12         fmt.Println("hello world ",i)
13     }
14     wait<-0
15 }
16 func main(){
17     var start1=make(chan int)
18     var wait1=make(chan int)
19     go onedream(start1,wait1)
20     time.Sleep(time.Second*10)
21     fmt.Println("发命令开始造数据")
22     start1<-1
23     <-wait1
24     
25     fmt.Println("制造数据结束....")
26     close(start1)
27     close(wait1)
28 }

2)多个线程同时进行

 1 package main 
 2 import(
 3     "fmt"
 4 )
 5 func onedream(index int,exit chan int){
 6     fmt.Println("this is  my index ",index)
 7     exit<-index
 8 }
 9 func main(){
10     var flag=make(chan int ,10)
11     for i:=0;i<10;i++{
12        go onedream(i,flag)
13     }
14     
15     for i:=0;i<10;i++{
16         fmt.Println("back index is ",<-flag)
17     }
18     
19     close(flag)
20     
21 }

 


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

本文来自:博客园

感谢作者:OneDream

查看原文:on the go way (二)channel 的用法

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

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