编程通用知识 系统编程

并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行.
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行.

进程并发

进程基本的状态有5种。分别为初始态,就绪态,运行态,挂起态与终止态。

缺点:
1:系统开销比较大,占用资源比较多,开启进程数量比较少。
2:在unix/linux系统下,还会产生“孤儿进程”和“僵尸进程”。

线程并发

LWP:light weight process 轻量级的进程,本质仍是进程 (Linux下)
进程:独立地址空间,拥有PCB,最小的资源分配单位
线程:没有独立的地址空间(共享),有独立的PCB,最小的cpu执行单位
缺点:
产生的现象叫做“与时间有关的错误”(time related)。为了避免这种数据混乱,线程需要同步。“多个控制流,共同操作一个共享资源”的情况,都需要同步。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

协程并发

1.协程:coroutine,一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。
2.进程和线程都是由系统调用,而协程是由开发者或者语言
3.进程和线程在调用函数时,函数是放在栈中,而协程不是,不同的函数可以协同执行
4.线程的调度是抢占式的而协程的是协作式(程序员或语言控制函数的切换时机(暂停、恢复函数))

协程实现

1.lua 从5.0版本开始使用协程,通过coroutine库来实现
2.python通过 yield/send,3.5之后使用async/await,是更好的替代方案
3.go 语言本身就实现了协程
4.java并没有对协程的原生支持,kilim框架实现了协程的效果

参考:
https://www.inf.ed.ac.uk/teaching/courses/os/slides/04-thread17.pdf
https://stackoverflow.com/questions/1934715/difference-between-a-coroutine-and-a-thread
http://www.sohu.com/a/237171690_465221

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值