Go并发

/ / Go并发

大型程序分为较小的子程序。同时运行其较小组件的程序称为并发。

同时运行的应用程序部分称为goroutines。 Goroutine和通道用于构造并发程序。

进程是在计算机中运行的独立执行实体,该计算机在内存中自己的地址空间中运行。进程具有同时执行实体的线程。线程共享进程的相同地址空间。

Goroutine很轻巧,比线程轻得多。 Goroutine在相同的地址空间中运行,因此必须同步访问共享内存。这可以通过sync包来完成,但是建议使用通道来同步goroutine。

链接:https://www.learnfk.comhttps://www.learnfk.com/go/go-concurrency.html

来源:LearnFk无涯教程网

goroutine被实现为函数或方法。它用" go"关键字调用(调用)。当goroutine完成时,调用者函数将不返回任何内容。

并发示例

package main
import (
   "fmt"
   "time"
   "sync"
)
var wg = sync.WaitGroup{}

func main() {
   wg.Add(2)
   go fun1()
   go fun2()
   wg.Wait()
}
func fun1(){
   for  i:=0;i<10;i++{
      fmt.Println("fun1, ->",i)
      time.Sleep(time.Duration(5*time.Millisecond))
   }
   wg.Done()
}
func fun2(){
   for i:=0;i<10;i++{
      fmt.Println("fun2, ->",i)
      time.Sleep(time.Duration(10*time.Millisecond))
   }
   wg.Done()
}

输出:

fun2, -> 0
fun1, -> 0
fun1, -> 1
fun2, -> 1
fun1, -> 2
fun1, -> 3
fun2, -> 2
fun1, -> 4
fun1, -> 5
fun2, -> 3
fun1, -> 6
fun1, -> 7
fun2, -> 4
fun1, -> 8
fun1, -> 9
fun2, -> 5
fun2, -> 6
fun2, -> 7
fun2, -> 8
fun2, -> 9

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

生成式推荐系统算法与实践 -〔傅聪〕

Kubernetes源码剖析与实战 -〔孔令飞〕

SRE实践:服务可靠性案例课 -〔白园〕

PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕

遗留系统现代化实战 -〔姚琪琳〕

如何讲好一堂课 -〔薛雨〕

技术管理案例课 -〔许健〕

跟月影学可视化 -〔月影〕

接口测试入门课 -〔陈磊〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者