多进程和多线程

1 多进程:

进程可以分为系统进程和用户进程。

进程是操作系统进行资源分配的基本单位。在windows下,进程又被细化成线程。一个进程下有多个能独立运行的更小的单位。

在同一时间同一计算机系统中如果允许两个或两个以上的进程处于运行状态,即就是多任务(并发技术)。

1.1 并发技术:

实现并发技术很复杂:最容易理解的就是“时间片轮转进程调度算法”,其思想是在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),看似像是同时并发运行,实则在任意时间有且仅有一个占用CPU。

1.2 并行技术:

一台计算机有多个CPU,如果进程数小于CPU数,则可同时运行。

在windows下,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,关系如下:

windows的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。

2 多线程的优点:

(1)使用线程可以把占据长时间的程序中的任务放到后台去处理。

(2)使用界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以显示一个进度条。

(3)程序的运行速度可能加快。

(4)在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较游泳了,在这种情况下我们可以释放一些珍贵的资源,如内存占用等。

3 多进程和多线程的区别:

4 多线程和多进程的应用:

(1)需要频繁创建销毁的优先用线程:这种原则最常见的应用就是web服务器了,来一个连接建立一个线程,断了就销毁线程。

(2)需要进行大量计算的优先使用线程:所谓大量计算,当然要耗费很多CPU,切换频繁了,这种请款下线程是最合适的,这种原则最常见的是图像处理、算法处理。

(3)强关联的处理用线程,弱相关的处理用进程:

那么什么是强、弱相关?例如一般的server需要完成如下任务:消息收发、消息处理。“消息收发”和“消息处理”就是弱相关的任务,而“消息处理”里面可能又分为“消息解码”“业务处理”,这两个任务相对来说相关性就要强多了。因此“消息收发”和“消息处理”可以分进程设计,而“消息解码”“业务处理”可以分线程设计。

当然,并不是一成不变,根据实际调整。

(4)可能要扩展到多机分布的用进程,多核分布的用线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值