多进程和多线程的效率,谁更好?(100分)

  • 主题发起人 主题发起人 xnew
  • 开始时间 开始时间
X

xnew

Unregistered / Unconfirmed
GUEST, unregistred user!
为了完成同一个任务,设计了两个方式。
方式一:用一个进程,内建多个线程,每个线程完成一个模块功能;
方式二:建立多个进程,各自完成某个模块功能。
在Windows2000 下,这两个方式效率一样吗?
 
如果你模块的任务可以并行,这两种方法效率无明显区别。
 
那到底有没有呢?或者说既可能是方式1好一点点,也可能是方式2好一点点,这是不确定的。还是说一定是某个方式好于另外一个方式。
 
不确定,跟线程的优先级有关。
二方法有一点好处,就是某个任务出了异常不会影响其它的任务。
一里可能导致整个进程崩溃。
 
这就和操作系统的多任务特性有关了,事实上程序运行时是分配一个个时间片分配给不同的进程的,所以操作系统并不是总是将所有时间片给你的程序,只能是这一个给你,下一个给别人,线程就不同了,操作系统直接把CPU的时间片分配给你的线程,系统不停的在各个线程之间切换,它对线程的中断是汇编语言级的,实际上在PC机中,同一时间只有一个线程在运行,由于时间片很短(20毫秒左右),所以看上去好象是多个线程在运行
综上所述,线程至少是好一点,当然你也可以采用进度条的方式使用多进程,比较直观
 
多进程和多线程同时用,最大区别我认为就是,多线程可以共享部分资源,而多进程中一个进程不能共享另一个进程的资源。从cpu分配的时间片来看,没有什么区别。 而多线程面对资源共享的问题,就需要解决共享冲突的问题,这样无疑会增大时间开销,而多进程就没有这部分时间开销,但是, 由于多进程的各个资源是独立不共享的,同样也会有负面影响,就是增大资源的开销。 如果你说的效率仅仅是时间上的差别 ,在内存cpu足够好的情况下,运行多线程的速度理论上应该更快一些
 
多个进程就是多个程序同时进行,一般相互不干扰,
多线程运行速度明显快于多进程,因为资源可以在多个线程之间共享。
 
对于系统来说
线程是最基本的CPU分配单位
同一进程内的线程可以共享资源
不同进程进程这间要共享数据,需要额外的操作
所以多进程可以完成的操作,基本上多线程都可以完成
所以还是多线程好一些
 
当双核cpu时,
多线程就发挥作用了,速度会明显提高的,
 
后退
顶部