(Linux)线程基础

本文介绍了Linux线程的概念,包括线程与进程的区别、线程的优缺点、线程的创建与控制。Linux通过轻量级进程模拟线程,线程作为调度的基本单位,具有创建成本低、调度成本低等优点,但也存在性能损失和健壮性降低等问题。线程控制涉及POSIX线程库,如pthread_create、pthread_exit和pthread_cancel等函数。
摘要由CSDN通过智能技术生成

什么是线程

  1. 线程是比进程的执行粒度更细的一个执行流(线程是进程的子集),是进程内部的执行分支(可理解为线程是在进程的地址空间内运行),是调度的基本单位。
  2. 一个进程至少有一个执行线程
  3. Linux没有真正的线程,但它用进程来模拟实现线程,而这种进程被称为轻量级进程。
  4. 线程用TCB管理,但是Linux下没有TCB,因此Linux用PCB模拟TCB,创建进程只有创建PCB,再分配资源即可,并且cup认为PCB为调度的基本单位。

线程和进程的比较

  1. 进程时资源竞争的基本单位
  2. 线程是程序执行的最小单位
  3. 线程共享同一进程数据,但也拥有自己独立的一部分数据,如自己的上下文数据(主要用于恢复数据)、线程ID、私有结构栈、寄存器、errno、信号屏蔽字、调度优先级,所以线程相对于进程而言,创建和调度成本低。
  4. 一个进程的多个线程共享以下数据:同一个地址空间、文件描述符表、每种信号的处理方式、当前工作目录、用户ID和组ID,一个进程只有一个主线程

线程的优点

  1. 创建成本低。
  2. 调度(选择、切换)成本低。
  3. 占用资源少。
  4. 能充分利用多处理器的可并行数量。
  5. 在等待慢速I/O操作结束的同时,程序可执行其他的计算机任务。
  6. 计算密集型应用的时候,为了能在多处理器系统上运行,将计算分解到多个线程中实现。
  7. 线程可以同时等待不同I/O操作。

线程的缺点

  1. 性能损失(主要体现在计算密集型线程,由于该线程不可和其他线程公用同一个处理器,所以当该线程数量超过处理器数量的时候,就会增加额外的同步和调度开销,而可用的资源不变)
  2. 健壮性降低(线程和线程间缺乏安全性)
  3. 缺乏访问控制(也就是一个线程在调用某些OS函数时,会影响整个进程,更通俗一点就是,一个线程的某些操作会影响整个进程,特别是当一个线程出错的时候,整个进程就会被释放)
  4. 编辑难度提高

线程控制

POSI线程库

  • 和线程有关的函数构成可一个完整的系列,一般都以pthread_ 开头。
  • 链接这些线程函数时需要使用编译器命令的“-lpthread”选项。
  • 头文件”pthread.h”

创建线程

int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*start_routine)(void*) void* arg);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值