资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Go语言

《7天学会Go并发编程》の第二天 写一个简单的Go并发程序以及Goroutine的使用

Go语言 更新时间: 发布时间: 计算机考试归档 最新发布

《7天学会Go并发编程》の第二天 写一个简单的Go并发程序以及Goroutine的使用

作者简介:二线厂在职大数据开发工程师。想和从事大数据开发的同学们多多交流~

明目张胆的摆烂,暗无声息的学习。

有用或者有帮助的话,就一箭三抖。

目录

一、如何写一个简单的go并发程序

二、go语言多线程简单练手任务

2.1 控制台输入并发打印

2.2 goroutine之间的通信

三、总结

一、如何写一个简单的go并发程序

 一定要动手写起来,才能学会哟

     

  go并发程序的编写相对于Java来说,应用十分简单。仅需要在需要并发执行的函数或者方法前加 go关键字就可以,不像Java还需要继承才可以实现并发编程。

在go语言中,线程的的名称是goroutine并不是thread,是因为goroutine 占用内存比较小,属于轻型资源占用,不像thread占用资源比较多,所以起了一个比较独特的名字。


是go并发编程实现:在控制台输入数字之前,启动一个从0开始计数的goroutine。

package main

import "fmt"

func f(n int) {
  for i := 0; i < 10; i++ {
    fmt.Println(n, ":", i)
  }
}

func main() {
  go f(0)
  var input string
  fmt.Scanln(&input)
}

执行效果:

  


go 并发编程实现控制台打印文字

下面的代码启动两个goroutline,分别在控制台打印。

package main

import "fmt"

func main() {
	go func() {
		fmt.Println("Goroutine one 开始启动了")
	}()
	go func() {
		fmt.Println("Goroutine two 开始启动了")
	}()
	for true {

	}
}

输出:

goroutline one 开始启动了
goroutline two 开始启动了

 :这段代码自己跑的话,可以多输入几次。观察一下新开启的线程。

二、go语言多线程简单练手任务

上面的章节主要介绍了如何开启一个并发线程,以及如何使用并发线程打印文字。这一节主要实现在控制台数据输入数字,每输入一个数字开启一个新的线程打印。

2.1 控制台输入并发打印

  实现控制台并发数字打印

package main

import (
	"fmt"
	"strconv"
)

func main() {
	threadIndex:=0
	for true {
		var nameInput string
		fmt.Scan(&nameInput)
		go func(name string) {
			fmt.Println("goroutline +"+ strconv.Itoa(threadIndex)+" 开始启动了"+name)
		}(nameInput)
		threadIndex++
 	}
}

zhangsan
goroutline +1 开始启动了zhangsan
wangsacda
goroutline +2 开始启动了wangsacda

 效果分析:

 通过在控制台阻塞输入,实现每输入一个字符串就能单独开启一个新线程。 

语法分析

go func(name string){}("name") 启动一个参数为string类型的函数,最后面的括号实现函数String类型参数的输入。

2.2 goroutine之间的通信

go语言中,有一个名言名句就是通过通信来实现线程之间的数据共享。

实现线程和主线程之间的通信

通过channel实现线程主动告知main goroutline自己的运行状态。与之前程序对比表明,不需要在main goroutline无限循环等待其他线程运行。

 package main

import "fmt"

func main() {
	ints := make(chan int, 1)
	go func(chan int) {
		fmt.Println("goroutline启动了")
		ints<-1
	}(ints)
	select {
	case <-ints:
		fmt.Print("goroutline exits")
	}
}

 执行结果: 

goroutline启动了
goroutline exits
Process finished with the exit code 0

三、总结

       今天实现了go语言多线程编码的入门联系,简单地开启了多个go线程执行任务⛽️~

裏裏裏感谢诸位大佬的阅读,点个关注,收藏一下呗~

    

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/902672.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【《7天学会Go并发编程》の第二天 写一个简单的Go并发程序以及Goroutine的使用】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2