博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程VS线程
阅读量:5950 次
发布时间:2019-06-19

本文共 988 字,大约阅读时间需要 3 分钟。

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

 

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

  

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

     

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

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

  

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

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

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

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

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

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

 

转载于:https://www.cnblogs.com/coder-zyc/p/9651476.html

你可能感兴趣的文章
struts2自定义拦截器
查看>>
Eclipse安装adt插件后之后看不到andorid manger
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
Zookeeper 集群安装配置,超详细,速度收藏!
查看>>
js中var self=this的解释
查看>>
js--字符串reverse
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
android ant Compile failed; see the compiler error
查看>>
项目经理笔记一
查看>>
通过IP地址获取地理位置
查看>>
计算机字符编码从0/1到UTF-8
查看>>
[原]Jenkins(三)---Jenkins初始配置和插件配置
查看>>
Cache Plugin 实现过程
查看>>
HBase Compaction详解
查看>>
TCP服务器端口转发: netsh
查看>>
2016OSC源创会年终盛典-架构与数据专场-张千明
查看>>
nginx实现rtmp,flv,mp4流媒体服务器
查看>>
46.tornado绑定域名或者子域名泛域名的处理
查看>>
Elasticsearch 2.2.0 节点发现详解
查看>>