线程知识点总结(Linux)

 Linu环境下线程可称为轻量级进程,但没有真正意义上的线程。

一、线程概念  (操作系统调度的基本单位)

  • 基本定义:
    线程是进程的分支执行流,在进程内部运行。
  • 具体理解:
    TCB 线程控制块,基本与进程相同;
    多个线程共享虚拟地址空间、文件描述符、信号处理方式、当前工作目录以及用户ID和组ID;
    线程独有栈、独立上下文、线程ID、一组寄存器、信号屏蔽器、调度优先级;
  • 线程优点:
    创建新线程代价相对较低、线程间切换相对容易、占用资源较少;
    能充分利用多处理器的可并行数量;
    在等待慢速I/O操作结束的同时,程序可执行其他的计算任务;
    计算密集型应用、I/O密集型应用,可提高性能;
  • 缺点:
    性能损失:增加额外的同步和调度开销,二可用资源不变;
    健壮性降低:某一线程异常会导致其他线程退出;
    缺乏访问控制、编程难度提高;

二、线程控制

  • 线程创建: 
    int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*star t_routine)(void*), void *arg);
    参数   : thread:返回线程ID  
                   attr:设置线程的属性,attr为NULL表⽰示使⽤用默认属性
                   start_routine:是个函数地址,线程启动后要执⾏行的函数    
                   arg:传给线程启动函数的参数
     返回值:成功返回0;失败返回错误码
  • 线程退出:
    1. 从线程函数return。这种⽅方法对主线程不适⽤用,从main函数return相当于调⽤用exit。
    2. 线程可以调⽤用pthread_ exit终⽌止⾃自⼰己。
    3. ⼀一个线程可以调⽤用pthread_ cancel终⽌止同⼀一进程中的另⼀一个线程。
  • 线程等待(将PCB从R状态转换到非R状态)
        int pthread_join(pthread_t thread, void **value_ptr);
               参数  : 
                         thread:线程ID  
                         value_ptr:它指向⼀一个指针,后者指向线程的返回值
    返回值:成功返回0;失败返回错误码
  • 线程分离:(主线程不关注线程执行过程,只在意线程资源是否释放)
    int pthread_detach(pthread_t thread);
    分离时,禁止 join();
    设置方式:
    主线程->新线程;命令分离
    新线程->主线程;要求分离
    要求:主线程比新线程退出晚;

三、线程的同步与互斥

  • 明确五大核心概念
    临界资源:多个线程都能看到的公共资源;
    临界区:多个线程中访问临界资源的代码;
    互斥:独占性和排他性的访问临界资源;
    同步:通常情况下,同步是要以互斥为前提,保证多个线程执行流顺序访问临界资源。(解决效率问题)
    原子性:保证原子性,就能保证临界资源的安全性
  • 互斥
    保护临界资源,避免临界资源的二异性;
    互斥锁:加锁过程中,将代码块转变成具有原子性的代码。
                (保证临界资源的前提,本身具有原子性)
    具体实现,之后更博。
  • 同步(生产者与消费者模型)
    环境变量:
         允许在环境变量不满足的情况下等待;
         在条件变量满足时,唤醒线程顺序访问临界资源;
  • 线程间的同步与互斥:可以实现无锁同步;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值