go语言基础 并发

.并发性、并行性
Concurrency并发性
同时可以执行多条路径,但是同一时间点上,只能执行1个。
parallelism并行性
多条路径同时执行,真正的并行多核支持。
2.进程,线程,协程-->多任务
进程process:正在执行的程序。
线程thread:进程中的一条执行路径。。
协程coroutine:轻量级的线程。 高并发
3.go语言中的goroutine,就是go的协程的实现。
4.启动goroutine,
go关键字,创建并启动协程,一条执行路径
go 函数调用
启动了goroutien,执行指定的函数,函数执行结束,意味着该goroutine结束了。如果函数有返回值,那么也会被舍弃的。
5.main goroutine,当程序执行的时候,自动创建并启动了main goroutine,执行main(),如果程序中有多条goroutine,并发执行,如果main goroutine结束,那么其他的子goroutine也会结束,我们不让主mian函数Goroutien结束的方法有以下三种。
A:time.Sleep()
B:同步等待组:sync包的WaitGroup
要执行的子goroutine,需要通过Add(2)
main中wait(),表示main goroutine进入等待状态,相当于阻塞,暂时不执行。直到WaitGroup中的子goroutine执行完毕,解除阻塞。
每当子goroutine,调用Done(),表示减。
C:通道:Channel,王道
package main

import (
   "fmt"
   "time"
)

func main()  {
   go test1()
   go test2()

   time.Sleep(5*time.Second)
}
//打印数字
func test1()  {
   for i:=1;i<=10000;i++{
      fmt.Println("test1函数中i:。。。", i)
   }
}
//打印数字
func test2()  {
   for j:=1;j<=10000;j++{
      fmt.Println("\ttest2函数中j:",j)
   }
}


这就是一个很典型的并发,大家可以自行去试试执行结果,为了不让main函数结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值