51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 48102|回复: 63
打印 上一主题 下一主题

什么是多线程?什么是多进程?有何区别?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-2-15 09:46:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

推荐
发表于 2005-2-15 11:22:04 | 只看该作者
什么叫进程?进程同程序有什么区别?
答:进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就不必我多讲了吧,所有由你启动的进程都是用户进程。进程是操作系统进行资源分配的单位。
在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。
   在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。 多任务带来的好处是明显的,比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。
 如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。
  在Windows中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如下关系:

  总线程数<= CPU数量:并行运行

  总线程数> CPU数量:并发运行

  并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多CPU的优势。

这里涉及到多任务操作系统的问题,多任务操作系统(如Windows)的基本原理是:操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务.Whoops,真绕口.

所以结合楼上的答复,不知道楼主是否可以满意!

关于多线程,多进程的问题,楼主可以看看操作系统方面的书,可以得到更多的启示!


  如上,多线程和多任务是有很明显的区别的.但是再想一下,在一个应用程序内实现多线程不也是靠CPU分配时间片吗?既然原理是相同的,那么多线程也可以说是多任务的.

评分

参与人数 1综合技术指数 +10 收起 理由
30059 + 10

查看全部评分

回复 支持 2 反对 0

使用道具 举报

该用户从未签到

2#
发表于 2005-2-15 09:50:50 | 只看该作者
多线程:类似“多通道”
多进程:类似“排队”

评分

参与人数 1综合技术指数 +10 收起 理由
30059 + 10

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2005-2-15 10:09:54 | 只看该作者
线程的外壳是进程,进程管理线程;
线程不占用系统资源,而进程占用系统资源;

评分

参与人数 1综合技术指数 +10 收起 理由
30059 + 10

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2005-2-15 15:28:45 | 只看该作者
谢谢你的回答,是不是可以这样理解,多进程是同时处理多个任务(或者说程序),而多线程是同时处理多个线程,这些线程可以是一个任务的,也可以是不同的任务的。
上午查资料看到这样的一个说法,感觉很有道理,就是对于单CPU的计算机来说,多线程是没有意义的,只是因为CPU处理的时间或者说时间的切片很小,我们不太能够感觉到而已。不知道我这样理解是不是错误?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-2-21 13:59:22 | 只看该作者
pcl2004_27说的太好了,我以前没有听说过什么"进城","县城"的(我是农村来的),不过哦现在我懂了,说的真好.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2005-2-21 16:30:03 | 只看该作者

楼上的说的真有意思!

回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-4-15 00:12:57 | 只看该作者
谢谢了!!!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-4-15 23:03:36 | 只看该作者
受教~~
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-4-21 16:04:35 | 只看该作者
还是不太imingbai
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-5-11 15:12:19 | 只看该作者
谢谢,对二者的区别有了更深一步的了解
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-5-17 10:18:50 | 只看该作者

谢谢

pcl2004_27 不愧为超级斑竹亚
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-6-9 17:38:03 | 只看该作者
pcl2004-27说的太好了!
在单CPU下,在微观上讲,CPU还是在处理一个任务,利用“时间片轮转进程调度算法”,执行不同的任务(线程),因为时间片比较微小,察觉不出来,所以宏观上看来,CPU在处理多任务。
说白了,单CUP下,电脑还是在一心一用的!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-6-12 11:08:04 | 只看该作者
说的太好了!
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-6-20 10:36:52 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2006-6-27 18:09:53 | 只看该作者
[quote]原帖由 [i]kpxl[/i] 于 2005-2-15 15:28 发表
谢谢你的回答,是不是可以这样理解,多进程是同时处理多个任务(或者说程序),而多线程是同时处理多个线程,这些线程可以是一个任务的,也可以是不同的任务的。
上午查资料看到这样的一个说法,感觉很有道理, ... [/quote]


你的理解是错误滴,对于单cpu,多线程的速度要更快些,简单理解就是,进程的切换需要切换进程所调用的资源,但线程属于同一个进程,线程见的切换无需切换所调用的资源,速度要快些。

不是很会描述,不知道你懂列灭
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-6-27 22:02:24 | 只看该作者
简单的来说,进程就是一个程序运行的时候被CPU抽象出来的,一个程序运行后被抽象为一个进程,但是线程是从一个进程里面分割出来的,由于CPU处理进程的时候是采用时间片轮转的方式,所以要把一个大个进程给分割成多个线程。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2006-6-28 22:27:54 | 只看该作者
进程指的是任务吧,多进程就是多个任务在执行
线程应该是进程的具体表现,多线程可以在同一个进程下,也可以在多个进程中
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2006-7-4 09:29:05 | 只看该作者

我顶

[font=宋体][color=Pink]希望大家能够交我这个朋友!我的QQ:215143066,MSN:jickllyloveshe@hotmail.com
欢迎加入我的群!26526836

[/color][/font]
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2006-7-9 14:39:12 | 只看该作者
进程是最小的分配单位,而进程是最小的执行单位
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-3 07:05 , Processed in 0.083351 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表