线程(轻量级进程)

线程:进程的一条执行流(可以有很多)

又称轻量级进程(LWP)(进程需要CPU执行全部 线程只需要执行一部分)

叫什么要看从什么角度出发(CPU看都是进程 本身看是线程 具体原因在下面的管理方式上)

和父进程共用一个虚拟地址空间(子进程有自己的虚拟地址空间)

线程在进程虚拟地址空间有独立空间 本质和进程用一个地址空间 没有自己的地址 只是有栈空间

TCB:线程控制块 (和PCB一样 所以Linux直接使用PCB管理进程和线程 不用TCB)

线程是调度的基本单位 进程是资源分配的基本单位

创建:

用原生线程库(pthread_creat)创建线程

一个线程可以创建或者销毁另一个线程

公有:

线程都共享一个虚拟地址空间 一个页表 进程中的绝大部分资源都是所有线程共享的

线程有各自的栈 共用一个堆

私有:

PCB属性 上下文数据 上面提到的栈 

一些操作:

ps-L查看轻量级进程信息 pyhread_self获取线程tid getpid获取所有进程id

优点快:

和进程对比

进程:PCB切换 上下文切换 虚拟地址空间切换 页表切换

线程:PCB切换 上下文切换 (后两个共享)

其他

创建消耗资源少 占用资源少 能并行数量多 用户态线程在用户态切换 不需要内核支持 多线程可以充分利用cpu资源 提升程序响应等

进程比线程安全是不会公用一个堆 线程会同步消耗少 进程之间通信需要调用内核接口 线程没有资源 只是调度 进程资源由系统分配

缺点:

单线程崩溃会导致进程异常 导致程序退出

不能单独访问某个线程

处理器不同步造成的性能损失

退出:

主线程调用pthread_exit只会退出主线程 不会全部退出 谁调谁退出

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值