1. 进程和线程的概念

进程:

  • 系统正在运行的一个应用程序;程序一旦运行就是一个进程;进程是资源分配的最小单位

线程:

  • 是进程的实际运行单位;一个人进程可以并发控制多个线程,每条线程并行执行不同的任务

区别:

  • 进程基本上相互独立的;而线程存在于进程内,是进程的一个子集
  • 进程拥有共享的资源,如内存空间等,供其内部的线程共享
  • 进程间通信较为复杂(同一台计算机的进程通信称为 IPC,不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP)
  • 线程通信相对简单,因为它们共享进程内的内存,一个例子是多个线程可以访问同一个共享变量
  • 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低

2. 并发和并行的概念

并发:

  • 两个或多个事件在同一时间间隔发生
  • 例: 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发

并行:

  • 并行是指两个或者多个事件在同一时刻发生
  • 例: 家庭主妇雇了个保姆,她们一起做这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一个人用锅时,另一个人就得等待)雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行

3. 异步和同步的概念

同步:

  • 需要等待结果返回,才能继续运行就是同步

异步:

  • 不需要等待结果返回,就能继续运行就是异步

总结

  • 单核 cpu 下,多线程不能实际提高程序运行效率,只是为了能够在不同的任务之间切换,不同线程轮流使用cpu ,不至于一个线程总占用 cpu,别的线程没法干活
  • 多核 cpu 可以并行跑多个线程,但能否提高程序运行效率还是要分情况的
  • IO 操作不占用 cpu,但是会堵塞线程; 只是我们一般拷贝文件使用的是【阻塞 IO】,这时相当于线程虽然不用 cpu,但需要一直等待 IO 结束,没能充分利用线程。所以才有后面的【非阻塞 IO】和【异步 IO】优化

原文地址:http://www.cnblogs.com/itcastwzp/p/16865105.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性