闲鱼怎么做钓鱼网站怎么推广自己的店铺
news/
2025/9/24 1:25:25/
文章来源:
闲鱼怎么做钓鱼网站,怎么推广自己的店铺,简洁风格的网站模板,中国搜索引擎排名2021Go并发#xff1a;Goroutine
1.并发基础概念#xff1a;进程、线程、协程
(1) 进程
可以比作食材加工的一系列动作
进程就是程序在操作系统中的一次执行过程#xff0c;是由系统进行资源分配和调度的基本单位#xff0c;进程是一个动态概念#xff0c;是程序在执行过程…Go并发Goroutine
1.并发基础概念进程、线程、协程
(1) 进程
可以比作食材加工的一系列动作
进程就是程序在操作系统中的一次执行过程是由系统进行资源分配和调度的基本单位进程是一个动态概念是程序在执行过程中分配和管理资源的基本单位每一个进程都有一个自己的地址空间。一个进程至少有5种基本状态初始态、执行态、等待状态、就绪状态、终止状态。
通俗讲: 进程就是一个正在执行的程序。
[一般情况] 一个程序一个进程
[多进程]] 一个程序多个进程
可以在终端输入以下内容来列出所有的进程
ps -A比如在Windows系统中一个运行的xx.exe就是一个进程。 (2) 线程
可以比作食材加工的某一个动作
线程是运算调度的最小单元是进程中的一个执行任务控制单元负责当前进程中程序的执行。一个进程至少有一个线程一个进程可以运行多个线程多个线程可共享数据。
进程与线程的区别如下 根本区别进程是操作系统资源分配的基本单位而线程是处理器任务调度和执行的基本单位 资源开销每个进程都有独立的代码和数据空间程序上下文程序之间的切换会有较大的开销线程可以看做轻量级的进程同一类线程共享代码和数据空间每个线程都有自己独立的运行栈和程序计数器PC线程之间切换的开销小。 包含关系如果一个进程内有多个线程则执行过程不是一条线的而是多条线线程共同完成的线程是进程的一部分所以线程也被称为轻权进程或者轻量级进程。 内存分配同一进程的线程共享本进程的地址空间和资源而进程之间的地址空间和资源是相互独立的 影响关系一个进程崩溃后在保护模式下不会对其他进程产生影响但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。 执行过程每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行必须依存在应用程序中由应用程序提供多个线程执行控制两者均可并发执行 查看线程 进入 terminal输入命令 ps-M[pid]查看对应 pid 线程 (3) 协程
协程(goroutine) 是轻量级的执行线程。 实操
假设我们有一个函数叫做 action()。 我们一般会这样 同步地 调用它使用 go action() 在一个协程中调用这个函数。 这个新的 Go 协程将会 并发地 执行这个函数。
package main import (fmt// time
)func action() {fmt.Println(Test Goroutine)
}func main() {go action()// time.Sleep(2 * time.Second)
}可见咩有任何输出把注释内容取消注释再运行 为什么要沉睡 go 语言运行非常快若没有沉睡可能会导致 “协程还没有执行完 main 函数已经结束了” 最终导致协程结束前 main 函数已经被销毁 因此我们需要让主进程去等待一定时间的子协程才能得到子协程的输出 2.多协程核心机理 步骤
任务切片/分配启动多个协程合并多个协程结果 使用场景
运算量比较多协程间依赖性比较弱
3.多协程等待实操 我们可以使用通道来同步协程之间的执行状态。使用 wait group 等待多个协程完成
package mainimport (fmtsync
)func main() {var wg sync.WaitGroupfor i : 0; i 2; i {wg.Add(1)go func(num int) {fmt.Printf(Goroutine Test %d\n, num)wg.Done()}(i)}wg.Wait()
}更多细节清查阅 waitgroup Go by Example 中文版: WaitGroup (gobyexample-cn.github.io)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914474.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!