【Linux】线程概念

一.线程

1.线程概念
线程是一个执行流,用来运行代码、处理数据
在传统操作系统下,使用pcb来描述一个程序的运行(进程)
在Linux下,使用pcb来模拟实现线程,因此Linux下pcb实际上是一个轻量级进程
这个轻量级进程因为共用大部分进程资源,相较于传统进程更加轻量化

2.线程优缺点
优点:
创建线程的代价比创建进程的代价小得多
线程占用的资源比进程少得多
线程之间的切换需要操作系统做的工作比进程切换少得多
线程能充分利用多处理器的可并行数量
在等待慢速I/O操作结束的同时,程序可执行其他任务
线程可以同时等待不同的I/O操作

缺点:
性能损失:增加了额外的同步和调度开销
健壮性降低:线程之间缺乏保护
缺乏访问控制
编程难度提高

3.线程异常
单个线程如果出现除0、野指针问题导致程序崩溃,进程也随之崩溃
线程是进程的分支,线程出现异常类似于进程出现异常,进而触发信号机制来终止进程,进程终止后,该进程内所有线程也随即退出

4.线程用途
提高CPU密集型程序的执行效率
提高IO密集型程序的用户体验

二.进程/线程

进程是资源分配的基本单位–因为程序运行时资源是分配给整个线程组(进程)的
线程是cpu调度的基本单位–Linux下pcb是线程
线程间资源的独有与共享
独有:栈、寄存器、信号屏蔽字、errno、线程ID、调度优先级
共享:虚拟地址空间、文件描述符表、当前工作路径、用户ID/组ID,信号处理方式

进程和线程的区别:
(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
(2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。
(3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
(4)线程是轻量级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
(5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值