进程 线程 协程 以及golang协程创建、出让、恢复、监控

本文介绍了进程、线程和协程的概念,详细讲解了协程作为线程内的执行体,如何在用户栈上运行。讨论了IO操作,特别是TCP Socket的处理,包括阻塞式、非阻塞式和IO多路复用(select、poll、epoll)的优缺点。重点探讨了epoll与协程的结合,如何利用协程轻松处理IO等待问题。
摘要由CSDN通过智能技术生成

一、进程 线程 概念

本文不做过多解析概念。

名词的指代,以及形容词的描述,本文推荐以下两篇文章。这两篇文章很好的从两个角度解释了进程及线程

1. 线程和进程的区别是什么? - zhonyong的回答 - 知乎 https://www.zhihu.com/question/25532384/answer/81152571

2. 阮一峰 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

 

二、协程

续上进程线程的其他部分知识:

每个进程都会有两个堆栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间

线程是进程中的执行体,有一个执行入口,以及从进程虚拟地址空间中分配的栈:用户栈、内核栈

线程获得CPU时间片后才可以被执行,CPU的寄存器也会切换或指向到这个线程的信息,从线程的执行入口开始执行

协程就是线程创建的内部的执行体(可以创建多个),位于用户栈(用户程序不能操作内核空间,所以也叫用户态线程)也具有标识符,执行栈位置,执行现场,执行入口等,有了这些信息就可以进行切换,保存,恢复等操作

操作系统对于协程是不知且无感的

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值