码迷,mamicode.com
首页 > 编程语言 > 详细

进程VS线程

时间:2018-09-16 00:36:34      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:消息队列   cpu   请求   栈内存   另一个   进程vs线程   上线   无法   操作   

  什么是进程?什么是线程?这种问题经常被问到,做下整理总结。

 

  进程是指在系统中正在运行的一个应用程序,可以认为是程序执行时的一个实例,而且每个进程拥有独立的地址空间(栈空间)。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访问另一个进程的资源,需要使用进程间通信,比如:管道,文件, 套接字等。

  

  线程是进程的一个实体,是进程的一条执行路径。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。同时, 每个线程还拥有自己的寄存器和栈,其它线程可以读写这些栈内存。

     

  总的来说,进程——资源分配的最小单位,线程——程序执行的最小单位


  线程进程的区别只要体现在几个方面
        1.因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给他独立的地址空间,建立众多的数据表来维护他的代码段、堆栈段和数据段,对于进程来说十分“奢侈”,而线程则不需要;
        2.进程间互不干扰,相互独立,进程的通信机制相对复杂,如管道、信号量、共享内存、消息队列套接字等通信机制,而线程则相对简单;
        3.属于同一个进程的所有线程共享该进程的所有资源,包括文件描述符,而不同的是进程只共享文件描述符
        4.线程又称为轻量级进程,进程有进程控制块,线程有线程控制块;
        5.线程必定也只能属于一个进程,而进程可以拥有多个线程;
        6.在程序结构上,使用进程比使用线程处理程序更复杂,使得程序结构更加繁琐;

  

  进程与线程的选择取决以下几点:

  1.需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。

  2.线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应

  3.因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;

  4.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;

  5.需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

 

进程VS线程

标签:消息队列   cpu   请求   栈内存   另一个   进程vs线程   上线   无法   操作   

原文地址:https://www.cnblogs.com/coder-zyc/p/9651476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!