线程与进程的爱恨情仇???

一:有了进程,为什么还需要线程???

一个服务器需要能够同时给多个客户端提供服务(利用多核心CPU),典型的做法就是:每个客户端连上服务器了,服务器就会创建一个进程,给客户端提供服务,这个客户端断开了,服务器再吧进程给释放掉
但上面的方法会产生一定的问题,比如:如果一个服务器,频繁的有客户端“来来去去”,服务器也就需要频繁的创建/销毁进程(开销比较大),进而会导致服务器的响应速度变慢.
线程,就是为了解决上述"进程"太重量的问题.

二:线程

线程是进程的一部分,一个进程往往包含多个线程.
严格的说:PCB是用来描述线程的,多个PCB构成一个进程.

三:线程和进程的区别与联系

1:同一个进程不同线程之间,是共用相同的内存资源和文件资源的(不同进程的内存指针和文件描述符表是同一个).
2:每个线程都是在独立的CPU上调度执行.
3:进程是系统资源分配的基本单位
4:线程是系统调度的基本单位
5:状态,上下文,优先级,记账信息,每个线程都有一组自己的属性.
6:pid每个线程不一样.
7:tgid:用一个线程的tgid是相同的(可以通过tgid确定哪些线程是同一个进程).
8:一个跑起来的程序就是一个进程.
9:一个进程包含一个线程或多个线程,就可以通过多线程的方式进程并发编程了.

四:创建线程or创建进程

创建一个进程,可能要包含多个线程,这个过程中,就会涉及到资源分配/资源释放,而资源分配和资源释放是非常繁琐的事情.
创建线程,资源已经在创建进程的时候进行分配了(同一个进程,包含多个线程,这些线程之间是共用资源,只有在创建第一个线程的时候(也就是创建进程的时候),去进行资源申请操作,后序在创建线程,都没有申请资源的过程了)

相关推荐

  1. 线进程???

    2024-03-25 13:58:03       19 阅读
  2. 进程线

    2024-03-25 13:58:03       21 阅读
  3. 线进程

    2024-03-25 13:58:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 13:58:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 13:58:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 13:58:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 13:58:03       20 阅读

热门阅读

  1. 微信小程序全局数据共享

    2024-03-25 13:58:03       16 阅读
  2. 封装的charts使用 vue2

    2024-03-25 13:58:03       15 阅读
  3. Springboot vue elementui 电子商城系统源码

    2024-03-25 13:58:03       17 阅读
  4. 蓝桥杯刷题--python-31-单调栈

    2024-03-25 13:58:03       19 阅读
  5. 2457. 美丽整数的最小增量

    2024-03-25 13:58:03       20 阅读
  6. 面试宝典:MySQL中索引为什么使用B+树的深度分析

    2024-03-25 13:58:03       15 阅读
  7. es同义词配置规则

    2024-03-25 13:58:03       16 阅读
  8. 天秀基础算法 - 二分查找和二分答案

    2024-03-25 13:58:03       18 阅读
  9. SpringCloud优缺点及适合场景

    2024-03-25 13:58:03       18 阅读
  10. npm 包管理工具:常用命令详解与使用指南

    2024-03-25 13:58:03       15 阅读
  11. kingbaseESV8分区表

    2024-03-25 13:58:03       16 阅读
  12. Github 2024-03-21 开源项目日报 Top10

    2024-03-25 13:58:03       15 阅读