多进程与多线程的选择

来源:互联网 发布:广东广电网络官网 编辑:程序博客网 时间:2024/05/20 11:46

 

作者:王姗姗华清远见嵌入式学院讲师。

 上周去参加答辩,内容是安防系统,然后就想到了我们如何来实现我们的程序,是选择进程还是线程。带着疑惑,查了些资料,总结如下:

1、首先要明确进程和线程的含义:

进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。进程是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。

每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。

使用线程的好处有以下几点:

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

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

c)程序的运行速度可能加快

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

2、其次来看下线程和进程的关系

线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。

3、然后我们来看下线程和进程间的比较

4、设计时考虑的使用技巧

这里参照ang639在多进程和多线程设计思考中提及的原则:

1.尽量避免长驻内存的进程,例如那些很少用到的功能,或周期性很长(10分钟以上),把它们的功能提取出来,做成一个小的应用程序。需要的时候再把它们拉起来(如通过crontab配置,或直接system)。

2.把目标设计成子功能系统的组合可用提高重用的易用性和维护性。
把目标根据功能划分不同的子系统,子系统间遵循特定的协议(文本或XML),由通讯联系起来,协作完成目标。

也就是说,我们在做设计的时候可以如下考虑:

1、线程的创建以及线程间的通信和同步都比进程要快。 在多核CPU上的任务分割是对线程而言的,不是进程。

2、如果不需要频繁的创建和销毁 执行的效率是并不多的,需要频繁创建的话,线程快。

3、其它的就根据你的实际情况选择了, 要是没有数据通信什么的, 线程间的通信比进程间方便。最关键的一点,多线程可以让同一个程序的不同部分并发执行。

所以在做安防系统的时候,报警系统和监控系统之间可以用多进程来做,对于报警系统中可以用多线程来实现如果发生意外,可以向用户发送消息,同时鸣笛,以及如果是火警的话,可以打开阀门等。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开广告店没生意怎么办 淘宝没有7天退怎么办 吃了松香的鸭子怎么办 理科生考电影专业研究生怎么办 pr导出视频很慢怎么办 8岁儿童头发稀少怎么办 八岁儿童版头发怎么办 小孩子有一块不长头发怎么办 小孩子头发上长癣怎么办 一岁多头发少怎么办 孩子头发长得慢怎么办 小孩头发长得慢怎么办 头发出油不洗头怎么办 青少年掉头发很厉害怎么办 洗了冷水头头痛怎么办 头发烫染后干枯毛躁怎么办 扎不起来的短发怎么办 发际线掉头发怎么办偏方 头上脓包掉头发怎么办 小孩头发少又黄怎么办 发旋哪里头发少怎么办 每次洗头发都掉好多怎么办 10岁儿童掉头发怎么办 1岁半宝宝掉头发怎么办 头发掉发严重怎么办吃什么 掉了一块钱很气怎么办 头发软又少怎么办盘头 头发出油掉的厉害怎么办 头发很油又少怎么办 18岁头发发量少怎么办 头发少长的慢怎么办 额头大发际线高怎么办 前额两边的头发变少了怎么办 吃减肥药掉头发怎么办 牙长智齿吃饭疼怎么办 头发稀少容易掉发怎么办 大把掉发头发稀少怎么办 头发掉厉害洗生发灵更掉怎么办? 额头两侧和头顶头发少怎么办 额头前面头发少怎么办天生的 头两边的碎头发怎么办