进程与线程

来源:互联网 发布:双色球独胆计算法 编辑:程序博客网 时间:2024/05/16 19:32

  进程是程序的一次执行,是系统进行资源分配和调度的一个独立单位;而线程是进程中执行的一段程序片段,是进程的一个实体CPU调度和分派的比进程更小的能独立运行的基本单位。

  进程间是独立的,这表现在内存空间、上下文环境上;线程运行在进程空间内。真正完成代码执行的是线程,而进程只是线程的容器,或者说是线程的执行环境。

  一般来讲(不使用特殊技术),进程无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。

  同一进程中的两段代码不能够同时执行,除非引入线程。

   线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源要少于进程,进程和线程都可以有优先级。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

  引入线程的好处 
(1)易于调度。 
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。 
(3)开销少。创建线程比创建进程要快,所需开销很少。。 
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。 

  从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配,这就是进程和线程的重要区别。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

原创粉丝点击