分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
### 前提说明:阅历有限 只说一些自己知道的进程 线程 协程
- 进程是cpu分配内存的最小单位 也就是说程序的执行都离不开进程
- 线程(轻量级进程 划重点轻量级进程和进程不是一回事) 是cpu时间片切换的最小单位 线程是由进程派生的
- 协程(轻量级线程 划重点轻量级线程和线程也不是一回事)
- 基于各种语言的运行模型不同:
- php master + child 进程模型 主进程派生子进程 同时主进程对子进程进行管理 子进程处理请求
- go 在一个进程内 起了多个操作系统线程 系统线程负责执行不同的goroutine
- 内核态 用户态
- 在单核机器上 是同一个时刻只有一个进程或者线程执行 进程和线程的调度是由cpu来调度的 所以是内核态
- go 虽然底层起了多个操作系统线程 cpu真正调度的还是这些系统线程 但是每个系统线程执行哪个goroutine 是由golang的runtime 进行调度的 也就是说 cpu调度golang的底层的系统线程 golang的runtime调度goroutine 所以协程的调度是用户态的
以上是个人的一些理解 希望我写的足够通俗易懂 有什么问题 或者 建议欢迎大家询问
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信868 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传