搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
从前慢现在也慢
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
人脸识别主要算法原理_某人脸识别系统中有 100 个人脸样本,识别时需要计算待识别人 脸图像与样本的相似
2
git出现的若干问题以及解决方案_git config --global http.sslverify false
3
spring中的spel表达式语言_springspe
4
MySQL 的日志(undo log、redo log、binlog)_mysql每次修改操作都会写入binlog吗
5
Android.bp快速入门_android.bp 层级
6
jenkins与apisix整合,实现自动化部署与负载均衡、灰度发布(蓝绿发布)_apisix 灰度发布
7
DevEco Studio创建新项目_如何在deveco studio中创建新项目?
8
vue自定义组件实现v-model双向绑定数据_自定义的v-modal怎么双向传值
9
最新2023阿里巴巴大佬整理Java面试八股文,大厂必备神器_阿里八股文指的是什么
10
Arduino驱动MQ5模拟煤气气体传感器(气体传感器篇)_arduino与mq5
当前位置:
article
> 正文
c++多线程 (生产者消费者问题)_c++ 多线程的生产者-消费者问题
作者:从前慢现在也慢 | 2024-03-19 14:06:57
赞
踩
c++ 多线程的生产者-消费者问题
针对多线程中常见的生产者消费者问题,封装了一个类,和测试代码,方便日后直接套用。
具体来说就是多线程使用时候经常遇到的 “一个线程取数据,一个处理数据,一个保存或传递数据 的情况” 。
简单说一下程序功能,很简单的一个应用,就是从某指定文件夹路径下读取文件名为 0-19.txt 的文件内容(此处一个线程),输出到控制台(此处一个线程),并向 out 文件夹中再写入这些文件内容(此处一个线程)。其中读取线程为生产者,显示保存线程为消费者。一个共享链表作为临界区,读取线程向里面 push 数据,读取线程与保存线程
均处理完后
erase 该数据。
其中主要用到了C++11中提供的几个类:
std::thread 类用于创建线程,
std::mutex 是C++11中提供的互斥锁,调用方法try_lock()加锁,unlock()解锁,对象构造初始是处于未上锁状态。
上锁解锁操作,除了直接调用上述两个方法,还可以使用std::lock_guard std::unique_lock这两个类,这两个对比没仔细看过,下面的代码中仅用了lock_guard,感觉这种使用起来方便一点。
使用过程中,用 std::lock_guard 类创建对象,并添加互斥锁实例,构造时给互斥锁加锁,等到 lock_guard 对象析构时解锁。
结构体 File 定义的是本次要操作的主要内容的存储结构:
constent ---- 保存文件内容;
id ---- 文件编号;
haveShown ---- 该文件是否被显示;
haveWritten ---- 该文件是否被保存;
(上述两个标志均为 true 时
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/267888?site
推荐阅读
article
oracle
自动
备份
和
压缩
,
oracle
定时
备份
压缩
的实现步骤...
oracle
定时
备份
压缩
的实现步骤1)需创建存储目录mkdir backup2)编写shell脚步#!/bin/bash...
赞
踩
article
uni
-
app
新手入门
到精通
1
_
uni
-
app
菜鸟教程...
uni
-
app
的开发必须要通过HBuilderX可视化页面HBuilderX的下载地址 https://www.dclo...
赞
踩
article
手机
安装
数据库
然后
远程
访问_
远程
访问
aidlux
...
手机
安装
linux再
安装
数据库
_
远程
访问
aidlux
远程
访问
aidlux
...
赞
踩
article
DVWA
靶场之
SQL
注入
通关
详解...
获得字段中的数据,使用查询语句:1 or 1=1 union select group_concat(user_id,f...
赞
踩
article
flutter
获取
屏幕
宽度工具类
_
flutter
physicalsize
...
flutter
获取
屏幕
宽度工具类
_
flutter
physicalsize
flutter
physicalsize
...
赞
踩
article
还不知道
Android
Jetpack
是
什么?你就out了_
jetpack
支持
19
么...
本文首发于微信公众号「
Android
开发之旅」,欢迎关注 ,获取更多技术干货简介谷歌在 2018 I/O 大会上发布了...
赞
踩
article
openGauss
在
数据库
课程
中的应用...
为了更好地
在
高校学生中推广
openGauss
数据库
,
在
西安电子科技大学计算机科学与技术学院教学中,
数据库
系统
课程
组将...
赞
踩
article
【
Android
Jetpack
学习之旅】
--
>
Jetpack
简介
_
jetpack
支持
andro...
Jetpack
是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种
Android
版本和设...
赞
踩
article
Android Studio使用
SQLite
数据库_
android
studio
sqlite
...
Android Studio使用
SQLite
数据库_
android
studio
sqlite
android
studi...
赞
踩
article
mysql
查询
排序
并
分页
_
MySQL
全面瓦解9:
查询
的
排序
、
分页
相关...
概述数据库中
的
数据直接呈现出来一般不是我们想要
的
,所以我们上两节演示了如何对数据进行过滤
的
方法。除了对数据进行过滤,我们...
赞
踩
article
Ubuntu中打开
Android
Studio
报错:Error
occurred
during
in...
ubunt中打开
Android
Studio
闪退,通过命令启动失败报错如下原因分析:顾名思义,应该是VM参数有问题,通过...
赞
踩
article
Flutter
——路由和
导航
_
flutter
怎么
通过
路由
导航
到
web
浏览器
...
方法顾名思义,在栈中使用频繁,将下一个页面添加到栈中,栈顶为下一个页面,但之前的页面只是在栈底,并未被销毁。进行点击事件...
赞
踩
article
Oracle
基本
入门...
一、数据的存储1.java 程序中的对象:数组、集合保存。当运行的程序结束的时候,里面的数据就消亡。2.文件存储系统:存...
赞
踩
article
FPGA
二四
译码器
设计
及
实现
_2-4
译码器
...
二四
译码器
是一种将两个输入字线转换为四个输出字线的数字电路,它可以将二进制编号的输入转换为对应的输出信号,从而
实现
更加便...
赞
踩
article
ubuntu
下
Android
Studio
创建模拟器时报错An
error
occurred
whi...
系统缺少一个库,打开终端,输入:sudo apt-get install lib32stdc++6_
ubantu
and...
赞
踩
article
安卓
开发连接
sqllite
用例
代码
_
安卓
sqllite
...
安卓
开发连接sqlite用例
代码
_
安卓
sqllite
安卓
sqllite
...
赞
踩
article
PCL
半径
滤波
(
C++
详细过程版)
_
pcl
半径
滤波
...
使用
C++
结合
PCL
详细过程实现的多线程加速版本的
半径
滤波
。
_
pcl
半径
滤波
pcl
半径
滤波
...
赞
踩
article
如何用
Android
Studio
制作浮动
窗口
应用程序
_
android
studio
弹出页面...
在台式电脑上,我们可以很轻松的最小化
窗口
,在后台做一些事情,并在任何时候都可以最大化
窗口
。但我们在
android
应用程序
...
赞
踩
article
CVE
-2024-24112
XMall
后台
管理系统
SQL
注入
漏洞
分析
...
XMall
后台
管理系统
SQL
注入
漏洞
分析
CVE
-2024-24112
XMall
后台
管理系统
SQL
注入
漏洞
分析
...
赞
踩
article
Android
jetpack
总结_
android
jetpack
偏好...
背景在
Android
开发中经常面临的问题:(1)在应用程序(Activity、Fragment)的生命周期管理困难,尤其...
赞
踩
相关标签
oracle自动备份和压缩
数据库
mysql
debian
sql
web安全
网络安全
flutter
Android jJetpack
viewmodel
livedata
lifecycle
openGauss
Android Jetpack
sqlite
android studio
mysql查询排序并分页
android
android-studio
ios
人工智能
运维
fpga开发
matlab