终于明白:有了线程,为什么还要有协程?

本文介绍了并发编程的历史和发展,从单进程到多进程多线程,再到协程的出现。重点阐述了线程和协程的调度方式,以及各自的优势和缺点。线程在进程内并发执行,而协程则提供了一种轻量级的并发机制,降低了内存开销。最后,以Go语言的G-M-P模型为例,展示了协程如何高效地利用资源。
摘要由CSDN通过智能技术生成

并发的发展历史

其实,在早期计算机并没有包含操作系统,这个时候,这个计算机只跑一个程序,这个程序独享计算机的所有资源,这个时候不存在什么并发问题,但是对计算机的资源来说,确实是一种浪费。早期编程都是基于单进程来进行,随着计算机技术的发展,于是,操作系统出现了,操作系统改变了这种现状,让计算机可以运行多个程序,并且不同的程序占用独立的计算机资源,如内存,CPU等。

操作系统出现后:

  • 资源利用率:可以在其他程序执行过程出现等待的时候,去执行其他程序,从而提高程序的利用率
  • 公平性:所有的程序可以共享计算机资源,一种有效的方式是通过时间片的方式来让程序共享计算机资源
  • 任务通信:在编写多任务程序时,可以一个程序执行一个任务,必要时,程序之间进行通信即可

终于明白:有了线程,为什么还要有协程?

当计算机从单程序变成多程序之后,这个时候又发展出了多线程,线程是进程里面的每个执行控制流,或叫执行路线。如果没有明确的协同机制,那么每个线程将独立运行,共享着进程的内存及CPU资源,多进程多线程之间虽然让多任务并行处理的能力大大提升,但是本质上还是分时系统,并不是时间上真正的并行,解决这个问题的方式显而易见,就是让多个CPU能够同时计算任务,从而实现真正意义上的多任务并行。

并发的优势

并发可以满足多任务任务需求,比如一边写代码一边听音乐,即使编写多线程程序具有挑战性,但它仍在使用中,是因为它可以带来如下的好处:

  • 更好的资源利用
  • 在某些场景下程序的设计会更简单
  • 提升程序的响应性
  • 多进程/多任务:单个CPU下的并发,如在使用QQ的同时打开爱奇艺看剧
  • 多线程/子任务:单个应用下的并发,如博客网站可以处理不同用户的访问请求

进程的调度

单核的 CPU 一次只能执行一个任务,想要实现多任务,需要把 CPU 的运行时间切成一段一段的时间片,每个时间片运行一个程序,循环的分配时间片给不同的应用程序,由于时间片非常的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值