什么是进程:进程是系统中正在运行的一个程序,程序一旦运行就是进程。

什么是线程:线程是进程的一个实体,是进程的一条执行路径。

进程和线程的区别体现在以下几个方面:

1.地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其他进程内不可见。

2.通信:进程间通信IPC(管道,信号量,共享内存,消息队列),线程间可以直接独写进程数据段(如全局变量)来进程通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

3.调度和切换:线程上下文切换比进程上下文切换快得多。

4.在多线程OS中,进程不是一个可执行的实体。

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

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

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

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

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

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

最新文章

  1. Python-面向对象(类)一
  2. Mac 显示隐藏文件
  3. 谈谈我的编程之路---WAMP(四)
  4. 《CheckboxDemo.java》
  5. js原生appendChild的bug
  6. MYSQL查询表结构
  7. 如何知道 win10 的激活到期时间和期限等
  8. 持续集成:TestNG组织如何测试用例
  9. UVALive3882-And Then There Was One-约瑟夫问题-递推
  10. Django—跨域请求(jsonp)
  11. javascript高级程序设计第3版——第8章 BOM(浏览器对象模型)
  12. 获取jdk支持的编码类型
  13. Python3入门(六)——函数式编程
  14. 【内核】linux内核启动流程详细分析
  15. Linux下Nginx+多Tocat下的负载均衡环境的简单搭建
  16. picture control控件
  17. jQuery用FormData对象实现文件上传以及如何通过ajax下载文件
  18. unity3d GameCenter的使用
  19. SonarQube install on Kubernetes
  20. solr java api 使用solrj操作zookeeper集群中的solrCloud中的数据

热门文章

  1. PHP大文件分片上传
  2. 并发编程入门(三): 使用C++11实现无锁stack(lock-free stack)
  3. 2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
  4. 【luoguP1991】 无线通讯网--最小生成树
  5. Android项目实战登录&注册
  6. P4779 【模板】单源最短路径(标准版)题解
  7. 删除线性表中为x的元素的三种简单算法。
  8. springboot+shiro 跨域解决(OPTIONS)
  9. [MyBatis]向MySql数据库插入一千万条数据 批量插入用时6分 之前时隐时现的异常不见了
  10. Java之加密算法