线程(一)线程概念,优缺点,基本操作

线程是操作系统调度的基本单位,它与进程共享同一地址空间,具有资源消耗少、通信便捷等优点,但也存在数据安全、异常处理等问题。线程创建、退出、等待和分离是其基本操作,线程的pid和tgid标识其身份。在Linux下,使用POSIX线程库进行线程管理,包括线程创建、退出、等待和分离等功能,需要引入<pthread.h>并链接-lpthread。
摘要由CSDN通过智能技术生成

什么是线程

线程是进程中的一条执行流,也是计算机调度的基本单位。在linux平台下,线程是由进程模拟实现的,故该线程也叫做轻量级进程,且线程被操作系统用pcb描述并管理。

线程与进程
  • 一个进程中至少有一个线程,也可以有多个线程,所以进程又称线程组。多线程是共享同一个进程地址空间的。
  • 进程是操作系统分配资源的最小单位,线程是计算机cpu调度的最小单位。
  • 进程有父子之分,线程不分父子,最多只能说有主从之分。
线程的优缺点

优点:

  1. 创建/销毁一个线程比创建/销毁一个进程的开销要小。因为不用额外创建(销毁)虚拟地址空间。
  2. 线程占用资源更少
  3. 线程间通信非常简单方便,因为线程间共享虚拟地址空间。不用想进程那样还要用管道/消息队列/共享内存
  4. 线程间的调度切换比进程要容易。
  5. 能够充分利用多处理器的并行数量
  6. 在计算密集型应用,可以将任务分配给多个线程。
  7. 在I/O密集型应用,可以将I/O操作重叠,线程同时等待不同的I/O操作。

缺点

  1. 因为线程间数据访问变得容易,访问数据的安全控制问题更加突出(posix信号量/互斥锁)
  2. 倘若一个线程因异常崩溃,整个进程都会退出。
  3. 多线程的程序编码难度增加

线程的优缺点都是根据共享虚拟地址空间二而产生的。但是并不是说线程所有的东西都共享,每个线程都有自己的栈区,如果线程间共享栈区,那么就会造成调用栈混乱。且线程是计算机cpu调度的基本单位,所以在cpu切换线程时,线程都要保存自己的上下文信息在pcb中,这个也是独有的。
在这里插入图片描述

线程id与进程id

线程的pcb结构如下:

struct task_struct {
...
pid_t pid;
pid_t tgid;
...
struct task_struct *grou
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值