1.基本概念
定义 | 含义 |
---|---|
并发: | concurrency,同一时刻只能有一条指令执行,但是多个线程的对应的指令被快速轮换地执行 |
并行 | parallel,同一时刻,有多条指令在多个处理器上同时执行,并行必须要依赖于多个处理器 |
阻塞 | 程序未得到所需计算资源时被挂起的状态 |
非阻塞 | 程序在等待某操作过程中,自身不被阻塞,可以继续处理其他的事情 |
同步 | 不同程序单元为了完成某个任务,在执行过程中需靠某种通信方式以协调一致,我们称这些程序单元是同步执行的 |
异步 | 为完成某个任务,不同程序单元之间过程中无需通信协调,也能完成任务的方式,不相关的程序单元之间可以是异步的 |
2.线程和进程比较
名称 | 含义 | 应用场景 |
---|---|---|
多线程 | 系统进行运算调度的最小单位 | IO密集型(磁盘IO ,网络IO ,数据库IO 等,譬如爬虫,网站开发等) |
多进程 | 系统进行资源分配的最小单位 | CPU密集型(大数据分析,机器学习等) |
多协程 | 程序员级别的调度 | 高并发的场景 |
3.协程和线程的比较
多线程:
- 多个线程切换需要频繁的加锁解锁,
- 需要保存或者恢复cpu上下文,
- 每个线程还需要有缓存cache等数据
多协程:
- 协程的切换是在单线程里实现任务的切换
- 且协程拥有自己的寄存器上下文和栈,无需线程上下文切换的开销
- 无需原子操作锁定及同步的开销
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!