C++的并发世界(九)——条件变量

0.绪论——单例模型

  单例设计模式是一种常见的设计模式,用于确保某个类只能创建一个实例。由于单例实例是全局唯一的。因此在多线程环境中使用单例模式时,需要考虑线程安全的问题。

1.消费者设计模式

在这里插入图片描述

2.condition_variable使用步骤

①准备好信号量

std::condition_variable cv;

②获取mutex
③获取mutex时修改数据
④释放锁并通知读取线程

lock.unlock();
cv.notify_one();
cv.notify_all();

3.读取共享变量的线程步骤

①获取与改变共享变量线程共同的mutex;
②等待信号通知 Wait()函数

4.condition_variable使用案例

#include <iostream>
#include <string>
#include <thread>
#include <list>
#include <sstream>
#include <mutex>std::list<std::string> message;
std::mutex mux;
std::condition_variable cv;void ThreadWrite()
{for (int i = 0;; i++){std::stringstream ss;ss << "Write msg" << i;std::unique_lock<std::mutex> lock(mux);message.push_back(ss.str());lock.unlock();cv.notify_one();//发送信号std::this_thread::sleep_for(std::chrono::seconds(100));}
}void ThreadRead(int i)
{for (;;){std::cout << "read msg:" << " [in] " << i <<std::endl;std::unique_lock<std::mutex> lock(mux);cv.wait(lock);//阻塞扽得改信号while (!message.empty()){std::cout << i << "read:" << message.front() << std::endl;message.pop_front();}}
}int main()
{ std::thread th(ThreadWrite);th.detach();for (int i = 0; i < 3; i++){std::thread th(ThreadRead,i + 1);th.detach();}getchar();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统Docker部署Apache Superset并实现公网实时访问本地数据

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

电商API接口告诉你中国跨境电商何以“一路繁花”?

3月31日&#xff0c;启程跨境华东中心仓突破单日自营订单5000单&#xff0c;刷新连云港市跨境进口单日纪录。一季度&#xff0c;连云港市纳入“点点通”公共服务平台统计的跨境电商交易额达2.06亿元&#xff0c;同比增长77.03%。 连云港的“景象”只是中国跨境电商业态蓬勃发展…

管廊ar实景可视化巡检提升安全性

在科技日新月异的今天&#xff0c;智慧工地ar远程巡检交互系统应运而生&#xff0c;它是ar开发公司深圳华锐视点综合运用了AR增强现实、5G通信、人工智能、物联网以及GPS北斗定位等前沿技术&#xff0c;为企业打造了一套全新的数字化巡检解决方案。不仅解放了巡检人员的双手&am…

揭秘IP地理位置:从技术原理到隐私考量

在当今数字化的世界中&#xff0c;IP 地理位置已成为网络定位、广告定向和安全控制等领域的重要工具。然而&#xff0c;对于大多数人来说&#xff0c;IP 地理位置的工作原理以及与隐私之间的关系可能还有些模糊。本文将深入探讨 IP 地理位置的技术原理&#xff0c;以及与隐私相…

Vulnhub:MHZ_CXF: C1F

目录 信息收集 arp-scan nmap nikto WEB web信息收集 dirmap gobuster ssh登录 提权 获得初始立足点 系统信息收集 横向渗透 提权 信息收集 arp-scan ┌──(root㉿ru)-[~/桌面] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:50:56:…

2024Spring> HNU-计算机系统-实验2-datalab-导引

前言 datalab考验对于位运算以及浮点数存储的理解&#xff0c;如果真的肯花时间去搞懂&#xff0c;对计算机系统存储的理解真的能上一个台阶。与课程考试关联性上来说不是很大&#xff0c;但对于IEEE的浮点数表示一定要熟练掌握。 导引 ①实验工具包 要完成的是bits.c中的15个…

解决arcgis发布服务时报错:要素服务需要一个已注册的数据库

发布服务时发生以下报错&#xff1a; 双击列表中的报错项&#xff0c;在弹出的窗口中点击【已注册的数据库】后边的添加按钮&#xff0c;设置注册数据库的名称 点击添加按钮&#xff0c;配置数据库的基本信息&#xff08;注意&#xff1a;这里配置的数据库连接需要与连接sde数据…

Linux使用宝塔面板部署Discuz结合内网穿透实现公网访问本地论坛

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

鸿蒙实现一种仿小红书首页滑动联动效果

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 效果描述&#xff1a;通过手指滑动列表&#xff0c;控制位置显示效果为&#xff1a;不论列表在什么位置下滑时下图粉色位置布局显示&#xff0c;手指上滑时下图粉色位置布局隐藏。 效果&#xff1a; 原理分析&…

helm与k8s

文章目录 一、helm二、K8S/K3S1.K8S基本组件1.1 资源对象1.2 核心组件1.3典型的创建 Pod 的流程1.4 Kubernetes 多组件之间的通信原理 2. YAML 文件2.1 Maps2.2 Lists2.3 使用 YAML 创建 Pod2.4 创建 Deployment 3.用 kubeadm 搭建集群环境3.1 环境3.2 镜像&#xff08;如果你的…

江南大学酒科技馆OLED透明屏项目方案

一、项目概述 本项目旨在为无锡江南大学酒科技馆提供OLED透明屏解决方案&#xff0c;通过安装2x2的OLED透明屏&#xff0c;为参观者带来全新的视觉体验&#xff0c;同时提升酒科技馆的展示效果与科技感。 二、产品选型 本项目选用OLED透明屏&#xff0c;其具有高透明度、高对比…

低温漂、低功耗电压基准,用在精密数据采集系统,供电类设备,工业仪表,测试设备等领域

MSR015/MSR025 是低温漂、低功耗、高精度 CMOS 电压基准&#xff0c; 具有 0.05% 初始精度、低功耗特点。该器件的低输出电压迟滞和低长期输出电压 漂移特性&#xff0c;进一步提高稳定性和系统可靠性。 此外&#xff0c;器件的小尺寸和低运行 电流特性使其非常适合便携…

Leetcode面试经典150_Q122买卖股票的最佳时机II

题目&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 最大…

达梦备份与恢复

达梦备份与恢复 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

xgo: golang基于-toolexec实现猴子补丁

注&#xff1a; 转载请注明出处&#xff0c; 原文链接。 概述 在这篇博客中&#xff0c;我将详细介绍 xgo 的实现细节。 如果你不知道&#xff0c;xgo 项目位于 https://github.com/xhd2015/xgo。 它的作用很简单&#xff0c;就是在每个 Go 函数的开头添加拦截器&#xff0…

【uniapp】个推H5号码认证一键登录(附代码)

前言 最近在做APP、h5产品&#xff0c;登陆注册成了难题。邮箱验证多数人不会使用&#xff0c;还是短信方便点&#xff0c;短信可以采用号码认证和验证码的方式&#xff0c;前者稍微便宜的&#xff0c;关于性价比和上手程度我推荐个推&#xff0c; 于是有了今天这篇案例记录&a…

Latex表格制作详细教程(table, tabular, multirow, multicolumn)

一、简单表格制作 Latex表格需要用到 table 和 tabular 环境。其中 table 环境里写表格的标题(caption&#xff09;、表格的位置之类的。 tabular 环境则是绘制表格的内容。一个简单的表格绘制代码如下所示&#xff1a; \documentclass{article}\begin{document}\begin{table…

2024-04-08 NO.6 Quest3 自定义交互事件

文章目录 1 交互事件——更改 Cube 颜色2 交互事件——创建 Cube2.1 非代码方式2.2 代码方式 ​ 在开始操作前&#xff0c;我们导入上次操作的场景&#xff0c;相关介绍在 《2024-04-08 NO.5 Quest3 手势追踪进行 UI 交互-CSDN博客》 文章中。 1 交互事件——更改 Cube 颜色 …

P8749 [蓝桥杯 2021 省 B] 杨辉三角形

[蓝桥杯 2021 省 B] 杨辉三角形 题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下数列&#xff1a; 1 , 1 , 1 , 1 , 2 , 1 , 1 , 3 , 3 , 1 , 1 , 4 , 6 , 4 , 1 , … 1,1,1,1,2,1,1,3,3,1,1,4,6,4,1, …

Python | Leetcode Python题解之第14题最长公共前缀

题目&#xff1a; 题解&#xff1a; class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:def isCommonPrefix(length):str0, count strs[0][:length], len(strs)return all(strs[i][:length] str0 for i in range(1, count))if not strs:return &quo…