多任务应用系统构建模式

本文介绍了多任务处理的几种模式,包括多进程、多线程、多线程+多进程及多协程。在计算密集型任务中,启用与CPU核心数相同的并行任务数可提升效率;IO密集型任务则适合增加任务数。线程、轻量进程(LWP)和协程各有特点,线程由操作系统调度,LWP在Linux中采用1:1模型,而协程运行在用户态,主动释放CPU。最后,文章提到了异步IO复用模式,如事件驱动,能高效处理IO密集型任务但无法充分利用多核CPU。
摘要由CSDN通过智能技术生成

计算密集型任务要进行大量的计算,消耗CPU资源,如视频解码等,启用与CPU核心数相同的并行任务数可最大化利用CPU资源和加快任务的执行;IO密集型任务,如网络、磁盘IO等,CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度),任务数适当增多,CPU效率将提高。

实现多任务有如下几种模式:

  • 多进程模式:在多核CPU上运行多个进程(数量与CPU核心数相同)可充分利用多核CPU计算能力。由于系统同时运行的进程数少,因此系统调度也非常高效。但每个系统允许同时运行的最大进程数量是有限的;
  • 多线程模式;
  • 多进程 + 多线程模式;
  • 多协程模式;
  • 异步IO复用模式:也称事件驱动。Nginx就是支持异步IO复用的Web服务器,在单核CPU上采用单进程就可以高效地支持多任务。用异步IO复用来实现多任务也是一个主要的应用趋势,但是无法充分利用多核CPU的计算能力。

下文将通过对线程、LWT、协程等相关概念的介绍来反映这些构建模式的差异。

 

线程

线程通常由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成,是进程中的一个实体,是系统独立调度分派的基本单位;线程也有就绪、阻塞

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值