当前位置: 首页 > article >正文

Leetcode—1117. H2O 生成【中等】(多线程)

2024每日刷题(182)

Leetcode—1117. H2O 生成

在这里插入图片描述

C++实现代码

class H2O {
public:
    H2O() {
        sem_init(&hydrogenSem, 0, 1);
        sem_init(&oxygenSem, 0, 0);
    }

    ~H2O() {
        sem_destroy(&hydrogenSem);
        sem_destroy(&oxygenSem);
    }
    

    void hydrogen(function<void()> releaseHydrogen) {
        sem_wait(&hydrogenSem);
        ++n;
        // releaseHydrogen() outputs "H". Do not change or remove this line.
        releaseHydrogen();
        if(n % 2 == 0) {
            sem_post(&oxygenSem);
        } else {
            sem_post(&hydrogenSem);
        }
    }

    void oxygen(function<void()> releaseOxygen) {
        sem_wait(&oxygenSem);
        // releaseOxygen() outputs "O". Do not change or remove this line.
        releaseOxygen();
        sem_post(&hydrogenSem);
    }
private:
    int n = 0;
    sem_t hydrogenSem;
    sem_t oxygenSem;
};

运行结果

在这里插入图片描述

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


http://www.kler.cn/news/350862.html

相关文章:

  • TS项目中如何合理的为接口定义参数类型
  • 百度文心一言接入流程-java版
  • 【Conda】Conda 超时设置及优化指南:提升包管理效率的关键
  • Helper types and functions (libevent
  • 3.cpp基本数据类型
  • ASP.NET Core 8.0 中使用 Hangfire 调度 API
  • 【QT】常用控件(一)
  • DevExpress WPF中文教程:Data Grid(数据网格)实现细节一览
  • 【ChatGPT】编写结构化 Prompt 的技巧
  • 搜维尔科技:使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据
  • HM NIS Edit无法选择安装程序语言
  • 在Docker中快速使用各个版本的Oracle数据库(10g、11g、12c、18c、19c、21c、23c)
  • 为什么react副作用函数叫hooks钩子函数,副作用指的是什么
  • Web组态数据联动
  • Go语言反射机制详解:通过反射获取结构体的字段和方法
  • 算法之排序
  • Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
  • shell错误修改
  • 无人机之放电速率篇
  • 浙大数据结构:KMP 字符串匹配算法比较
  • linux系统账号安全应该如何设置
  • 第2节 如何学习鸿蒙技术
  • React(四) 事件总线,setState的原理,PureComponent优化React性能,ref获取类组件与函数组件
  • cisco网络安全技术第3章测试及考试
  • excel如何把年龄转换为日期
  • HTML5_标签_各类表格的实现