基础知识
在学习golang的Goroutine和channel之前,先回顾一下最基本的并发知识
1s = 1000ms =1000000us = 1000000000ns
并行: 借助多核Cpu实现。
并发: 多个计算任务顺序执行,轮换使用cpu时间轮片
进程并发 :
程序 : 编译成功得到的二进制文件 占用 磁盘空间 。 死的
进程 : 运行起来程序。占用系统资源
线程并发:
线程:LWP轻量级的 进程。 最小的执行单位
进程:最小的系统资源分配单位
同步():
协同步调。规划先后顺序。
线程同步机制:
互斥锁(互斥量) :建议锁。拿到锁以后,才能访问数据,没有拿到锁的线程,阻塞等待。等待拿锁的线程释放锁。
读写锁: 一把锁(读属性、写属性)。写独占,读共享。写锁优先级高。
协程并发:
协程 (coroutine) 也叫清凉级线程
提高程序执行效率
Goroutine :go 程
创建与进程中。直接使用go关键词,放置于函数调用前面,产生一个go程 。并发。
下面是一个Goroutine的基本用法
package main
import (
"fmt"
"time"
)
func newTask() {
i := 0
for {
i++
fmt.Printf

本文介绍了Golang中的并行与并发基础知识,重点讲解了Goroutine和Channel。Goroutine是Golang的轻量级线程,主Go程结束时,所有子Go程也会退出。通过`runtime.Gosched()`可以出让CPU时间片,而`Goexit()`则会结束当前Go程。此外,文章还提到了`GOMAXPROCS`用于设置CPU核心使用数量。Channel作为Go语言特有的通信机制,无缓冲和有缓冲的Channel都有其应用场景。在Channel上进行数据传递时,读写端必须同时就绪,否则操作会被阻塞。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



