• on the go way (二)channel 的用法


    在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 }
  • 相关阅读:
    js学习笔记
    在 Windows 下远程桌面连接 Linux XManager 篇
    使用多种反病毒引擎扫描文件
    光纤接口小知识
    在 Windows 下远程桌面连接 Linux VNC 篇
    基于 RHEL 的 CentOS 5.5 发布
    安装Windows 7的XP模式的步骤
    跨平台加密版 SQLite 3 wxSQLite3
    Free 的迷思
    使用 iptables 限制黑客猜密码
  • 原文地址:https://www.cnblogs.com/OneDream/p/5306227.html
Copyright © 2020-2023  润新知