进程 线程 协程 的一些理解

wangchao · · 515 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

### 前提说明:阅历有限 只说一些自己知道的进程 线程 协程 - ​ 进程是cpu分配内存的最小单位 也就是说程序的执行都离不开进程 - ​ 线程(轻量级进程 划重点轻量级进程和进程不是一回事) 是cpu时间片切换的最小单位 线程是由进程派生的 - ​ 协程(轻量级线程 划重点轻量级线程和线程也不是一回事) - ​ 基于各种语言的运行模型不同: - ​ php master + child 进程模型 主进程派生子进程 同时主进程对子进程进行管理 子进程处理请求 - ​ go 在一个进程内 起了多个操作系统线程 系统线程负责执行不同的goroutine - ​ 内核态 用户态 - ​ 在单核机器上 是同一个时刻只有一个进程或者线程执行 进程和线程的调度是由cpu来调度的 所以是内核态 - ​ go 虽然底层起了多个操作系统线程 cpu真正调度的还是这些系统线程 但是每个系统线程执行哪个goroutine 是由golang的runtime 进行调度的 也就是说 cpu调度golang的底层的系统线程 golang的runtime调度goroutine 所以协程的调度是用户态的 以上是个人的一些理解 希望我写的足够通俗易懂 有什么问题 或者 建议欢迎大家询问

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

515 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传