嵌入式开发之线程

时间:2024-11-10 06:59:18

进程 vs 线程

  • 进程在切换时系统开销大
  • 很多操作系统引入了轻量级进程LWP
  • 同一进程中的线程共享相同地址空间
  • Linux不区分进程、线程(都会创建:task_strcut)

线程特点:

通常线程指的是共享相同的地址空间的多个任务,使用多线程的好处

  • 大大提高了任务切换的效率
  • 避免了额外的TLB & cache的刷新

一个进程中的多个线程共享以下资源

  • 可执行的指令
  • 静态数据
  • 进程中打开的文件描述符
  • 当前工作目录
  • 用户ID
  • 用户组ID

每个线程私有的资源包括

  • 线程ID(TID)
  • PC(程序计数器)和相关寄存器
  • 堆栈
  • 错误号(errno)
  • 优先级
  • 执行状态和属性

Linux线程库

pthread线程库中提供了如下基本操作:

  • 创建线程
  • 回收线程
  • 结束线程

同步和互斥机制

  • 信号量
  • 互斥量

线程创建-pthread_create

#include <pthread.h>

int pthread_create(pthread_t