多线程

什么是线程?

  说到线程,我们先来说一下什么是进程,进程是一个运行起来的程序,在操作系统中,一个程序运行起来,程序被加载到内存中,操作系统创建一个进程描述符(进程控制块)pcb对程序的运行进行描述控制,因此进程就是pcb,在Linux中进程是task_struct结构体。
  Linux线程使用进程pcb模拟实现,因此Linux的线程可以说是一个轻量级的进程,如果说pcb是线程,那么进程就是一个线程组,在一个进程中有一个或多个线程。由于CPU调度的是pcb,那么在Linux下,线程是CPU调度的基本单位,由于程序运行的时候分配进程资源,所以说进程(线程组)是资源分配的基本单位。
  在同一个进程中的线程的共享同一块虚拟地址空间,所以线程之间的通信非常简单,那么这么多线程在调用的时候为什么不会出现栈混乱?接下来为大家介绍同一个进程中个线程之间的共享和独有资源。
线程的共享资源:文件描述符、每种信号的处理方式、当前工作目录、用户ID和组ID
线程的独有资源:栈、寄存器、信号屏蔽字、errno、线程标识符

多线程优点:

1、线程之间通信简单
2、线程的创建/销毁成本低
3、线程的调度成本更低
4、线程的执行粒度更细

多线程缺点:

1、线程之间缺乏访问控制,编码难度更高(任何一个线程都可以访问虚拟地址空间中的任意进程,数据争抢更频繁)
2、健壮性较低:线程的某些错误会导致整个进程的退出

多线程的使用场景:

  线程创建的越多效率越高,要根据具体的情况而定,比如说IO密集型程序是大量的磁盘IO操作,只有处理完当前文件才会去读取下一个文件,是串行化运行,如果使用多线程,就可以同时读取多个文件,这样的效率会大大提升,还有CPU密集型程序,也是同样的道理,虽然CPU密集型程序是大量的数据运算程序,但它和IO密集型程序一样,使用多线程会提高效率。
线程控制:线程创建、线程终止、线程等待、线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值