当前位置 博文首页 > 森明帮大于黑虎帮的博客:【Linux从青铜到王者】第十三篇:Linux

    森明帮大于黑虎帮的博客:【Linux从青铜到王者】第十三篇:Linux

    作者:[db:作者] 时间:2021-08-02 18:42

    在这里插入图片描述

    系列文章目录


    文章目录

    • 系列文章目录
    • 前言
    • 一、Linux线程概念
        • 1.什么是线程
        • 2.线程的优点
        • 3.线程的缺点
        • 4.线程的异常
        • 5.线程的用途
    • 二、进程和线程的对比
        • 1.进程和线程
        • 2.多进程的应用场景有哪些?
    • 三、线程控制
        • 1.POSIX线程库
        • 2.创建线程
        • 3.进程ID和线程ID
        • 4.线程ID及进程地址空间布局
        • 5.线程终止
        • 6.线程等待
        • 7.线程分离
    • 四 、线程互斥
        • 1.进程线程间互斥相关概念
        • 2.线程安全
        • 3.线程不安全
          • 1.线程安全的++操作
          • 2.线程不安全的++操作
        • 3.线程不安全代码实现(黄牛抢票)
        • 4.互斥量mutex
        • 5.互斥锁的原理
          • 1.什么是互斥锁
          • 2.互斥锁逻辑
          • 3.加锁逻辑
        • 6.互斥锁的接口
          • 1.初始化互斥锁
          • 2.销毁互斥锁
          • 3.互斥锁的加锁和解锁
            • 1.阻塞加锁接口
            • 2.非阻塞加锁接口
            • 3.带有超时时间的加锁接口
            • 4.解锁接口
          • 4.互斥锁的使用
            • 1.什么时候使用初始化互斥锁
            • 2.什么时候使用销毁互斥锁
            • 3.什么时候使用加锁
            • 4.什么时候使用解锁
            • 5.加锁之后不解锁
            • 6.gdb调试:哪个工作线程加锁之后不解锁
          • 5.正确互斥锁的使用
        • 7.死锁
          • 1.死锁的定义
          • 2.死锁的模拟实现
          • 3.死锁生成的4个必要条件
          • 4.避免死锁的条件(满足其中一个条件就可以)
          • 5.避免死锁的算法
    • 五 、线程同步
        • 1.模拟加锁的未加条件变量单个人吃面例子
        • 2.条件变量
          • 1.PCB等待队列
        • 3.条件变量函数
          • 1.条件变量初始化
          • 2.条件变量销毁
          • 3.条件变量唤醒
          • 4.条件变量等待
        • 4.模拟加锁的加条件变量单个人吃面例子
        • 5.模拟加锁的加条件变量多个人吃面例子
        • 6.条件变量关于等待接口的几个问题
          • 1.条件变量的等待接口参数为什么需要互斥锁?
          • 2.pthread_cond_wait函数的实现原理
          • 3.线程等待的时候,被唤醒之后,需要做什么事情
    • 六、生产者消费者模型
        • 1.生产者、消费者遵循的原则
        • 2.生产者、消费者遵循的原则
        • 3.生产者消费者模型优点
        • 4.基于BlockingQueue的生产者消费者模型
        • 5.基于BlockingQueue的生产者消费者代码实现
    • 七、POSIX信号量
        • 1.POSIX信号量的概念
        • 2.POSIX信号量初始化
        • 3.POSIX信号量销毁
        • 4.POSIX信号量等待
        • 5.POSIX信号量发布
        • 6.基于环形队列的生产消费模型
        • 7.基于环形队列的生产消费模型代码实现
    • 八、线程池
        • 1.线程池概念
        • 2.线程池作用
        • 3.线程池应用场景
        • 4.线程池示例
        • 5.基于队列的线程池实现代码
        • 6.线程池惊群问题
    • 九、线程安全的单例模式
        • 1.单例模式概念
        • 2.单例模式特点
        • 3.饿汉方式实现单例模式
        • 4.懒汉方式实现单例模式
        • 5.懒汉方式实现单例模式(线程安全版本)
    • 十、STL智能指针和线程安全
        • 1.STL中的容器是否是线程安全
    • 十一、其他常见的各种锁
    • 💬总结
    cs