Leetcode刷题笔记题解(C++):1114. 按序打印(多线程)

思路:

保证A,B,C三个线程的顺序不会变,即优先级顺序的问题

A,B需要资源1,B,C需要资源2

A先占用资源1和资源2,A线程完了之后释放资源1不释放资源2,然后B线程占用资源1,A线程完了之后释放资源1和资源2,这时候 C线程可以占用资源2并进行

class Foo {
    //声明2个互斥量
    mutex mtx1,mtx2;
public:
    Foo() {
        //在类的构造函数中对2个互斥量进行加锁
        mtx1.lock();
        mtx2.lock();
    }

    void first(function<void()> printFirst) {
        //线程A的优先级较高,不需要去获取资源就可以进行
        // printFirst() outputs "first". Do not change or remove this line.
        printFirst();
        //线程A打印完之后对资源1进行释放,下一步线程B进行调用
        mtx1.unlock();
    }

    void second(function<void()> printSecond) {
        //去获取资源1,所有在A线程还没释放的时候B线程就不会进行下去
        mtx1.lock();
        // printSecond() outputs "second". Do not change or remove this line.
        printSecond();
        //对资源1进行释放
        mtx1.unlock();
        //对资源2进行释放,下一步线程C进行调用
        mtx2.unlock();
    }

    void third(function<void()> printThird) {
        //去获取资源2,所有在B线程还没释放的时候C   线程就不会进行下去
        mtx2.lock();
        // printThird() outputs "third". Do not change or remove this line.
        printThird();
        //对资源2进行释放
        mtx2.unlock();
    }
};

相关推荐

  1. C++ 线顺序打印

    2024-01-28 19:04:01       37 阅读
  2. 手撕面试线交叉打印ABC

    2024-01-28 19:04:01       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-28 19:04:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-28 19:04:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-28 19:04:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-28 19:04:01       20 阅读

热门阅读

  1. C++从零开始的打怪升级之路(day23)

    2024-01-28 19:04:01       39 阅读
  2. python使用函数求余弦函数的近似值

    2024-01-28 19:04:01       37 阅读
  3. 并行计算工具 MPI 简单教程

    2024-01-28 19:04:01       33 阅读
  4. 2024年1月27日

    2024-01-28 19:04:01       37 阅读
  5. 初等数论,LeetCode 365. 水壶问题

    2024-01-28 19:04:01       46 阅读
  6. Vue——vue3拖拽库Sortablejs

    2024-01-28 19:04:01       39 阅读
  7. C: AES对称加密算法代码

    2024-01-28 19:04:01       40 阅读
  8. QT笔记 - QToolButton triggered(QAction *)不触发问题

    2024-01-28 19:04:01       33 阅读
  9. 初识C语言

    2024-01-28 19:04:01       41 阅读
  10. go 面试题分享

    2024-01-28 19:04:01       28 阅读
  11. 运维文本三剑客详辨

    2024-01-28 19:04:01       30 阅读
  12. Linux delay相关函数实现

    2024-01-28 19:04:01       25 阅读