Leetcode—1115. 交替打印 FooBar【中等】(多线程)

2024每日刷题(180)

Leetcode---1115. 交替打印 FooBar

C++实现代码

cpp 复制代码
class FooBar {
private:
    int n;
    sem_t fooSem;
    sem_t barSem;

public:
    FooBar(int n) {
        this->n = n;
        sem_init(&fooSem, 0, 1);
        sem_init(&barSem, 0, 0);
    }

    ~FooBar() {
        sem_destroy(&fooSem);
        sem_destroy(&barSem);
    }

    void foo(function<void()> printFoo) {
        
        for (int i = 0; i < n; i++) {
            sem_wait(&fooSem);
        	// printFoo() outputs "foo". Do not change or remove this line.
        	printFoo();
            sem_post(&barSem);
        }
    }

    void bar(function<void()> printBar) {
        
        for (int i = 0; i < n; i++) {
            sem_wait(&barSem);
        	// printBar() outputs "bar". Do not change or remove this line.
        	printBar();
            sem_post(&fooSem);
        }
    }
};

运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

相关推荐
GJGCY43 分钟前
财务智能体落地实践:RPA、大模型与规则引擎如何构建业财自动化闭环?
经验分享·ai·自动化·财务·智能体
Kx_Triumphs1 小时前
HDU4348 To the moon(主席树区间修改模板)
算法·题解
旖-旎1 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
Darkwanderor2 小时前
对Linux的进程控制的研究
linux·运维·c++
云泽8082 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
轻颂呀2 小时前
约瑟夫环问题
算法
REDcker2 小时前
libdatachannel 快速入门
c++·webrtc·datachannel
汇策研习社4 小时前
改良版ADX指标实战指南:告别传统ADX滞后、震荡误判难题
大数据·经验分享·金融·区块链·fastbull
科技大视界4 小时前
投资AI项目,传统尽调不够用了——李章虎律师拆解算法、数据、算力三大雷区
人工智能·算法·数据挖掘