标准库版thread group

news/发布时间2024/8/25 15:36:39

使用标准库替代boost中的thread group

转载修改自 秋天的栗树:用std::thread替换实现boost::thread_group

  • 使用unique_ptr替换了其中的auto_ptr(已不受支持);
  • 添加了<functional> <algorithm>两个头文件;
#include <list>
#include <mutex>
#include <thread>
#include <memory>
#include <algorithm>
#include <functional>
namespace std
{//兼容boost::thread_group//使用std::thread代替boost::thread,std::mutex代替boost::shared_mutexclass thread_group{private:thread_group(thread_group const&);thread_group& operator=(thread_group const&);public:thread_group() {}~thread_group(){for(auto it=threads.begin(),end=threads.end();    it!=end;++it){delete *it;}}template<typename F>thread* create_thread(F threadfunc){lock_guard<mutex> guard(m);unique_ptr<thread> new_thread(new thread(threadfunc));threads.push_back(new_thread.get());return new_thread.release();}void add_thread(thread* thrd){if(thrd){lock_guard<mutex> guard(m);threads.push_back(thrd);}}void remove_thread(thread* thrd){lock_guard<mutex> guard(m);auto it=std::find(threads.begin(),threads.end(),thrd);if(it!=threads.end()){threads.erase(it);}}void join_all(){lock_guard<mutex> guard(m);for(auto it=threads.begin(),end=threads.end();it!=end;++it){(*it)->join();}}size_t size() const{lock_guard<mutex> guard(m);return threads.size();}private:list<thread*> threads;mutable mutex m;};
}

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

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

相关文章

振弦采集仪在混凝土结构监测中的应用研究

振弦采集仪在混凝土结构监测中的应用研究 振弦采集仪广泛应用于混凝土结构的监测中。混凝土结构是现代建筑工程中常见的结构形式,其质量和安全性对于建筑物的使用寿命和人员安全具有重要影响。因此,对混凝土结构进行监测和评估是至关重要的。 振弦采集仪是一种利用振弦原理进…

第十五天:加密和安全技术-CA/OPENSSL

一、安全机制 1.1常见的安全攻击 STRIDESpoofing 假冒,钓鱼网站 Tampering 篡改 Repudiation 否认 Information Disclosure 信息泄漏 Denial of Service 拒绝服务 Elevation of Privilege 提升权限1.2安全设计基本原则使用成熟的安全系统 以小人之心度输入数据 外部系统是不安…

文心一言 VS 讯飞星火 VS chatgpt (188)-- 算法导论14.1 5题

五、用go语言,给定 n 个元素的顺序统计树中的一个元素 x 和一个自然数 i ,如何在O(lgn)的时间内确定工在该树线性序中的第 i 个后继? 文心一言,代码正常运行: 在顺序统计树(也称为平衡二叉搜索树)中,要找到一个元素 x 的第 i 个后继,我们可以使用以下步骤: 从根节点开…

读元宇宙改变一切笔记14_读后总结与感想兼导读

读后总结与感想兼导读1. 基本信息 元宇宙改变一切 The Metaverse And How It Will Revolutionize Everything [加拿大] 马修鲍尔 (Matthew Ball)著 浙江教育出版社,2022年9月出版 1.1. 读薄率 书籍总字数375千字,笔记总字数47035字。 读薄率47035375000≈12.54% 1.2. 读厚方…

每日刷题 考勤刷卡

一.题目 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只要在一天中员工刷过一次卡, 就认为他到岗了。 现在小蓝导出了一天中所有员工的刷卡记录,请将所有到岗员工的…

picoCTF login/logon 题解

密码信息可能保存在前端,分析js文件:login 尝试admin admin弱口令,提示Incorrect Password 输入其他用户名,提示Incorrect Username 尝试使用admin用户名,对密码进行爆破 启动burpsuite 发现抓不到包 密码信息可能保存在前端,分析js文件: (async()=>{await new Promise((e=&…

m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件

1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,测试结果如下: 2.算法涉及理论知识概要在现代通信系统中,为了确保数据传输的可靠性,经常需要使用各种纠错编码技术。其中,里德-所罗门(Reed-Solomon, RS)码是一种非常强大的线性纠错码,特别适用于纠正多个随机符号…

【深度学习基础】批量归一化 BatchNormalization

一、背景机器学习的本质是对物理世界进行建模,做的就是拟合数据分布。但是在模型训练过程中,神经网络参数不断更新,导数中间层的数据分布频繁地变化(内部协变量偏移),不利于网络参数优化。具体表现为:每层的参数需不断适应新的输入数据分布,降低学习速度,增大学习的难…

Applescript成功实现imessage数据筛选,imessage蓝号检测,无痕检测手机号是否注册imessage的原理

一、imessages数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编…

4、Git远程仓库

4.1、 常用的托管服务[远程仓库] 前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库 呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。 gitHub( 地址:https://github.com/ …

二分查找法理解

最开始做这道题的时候没想到用这种方法,我之后也在想二分查找法什么时候能用。 其本质上还是在有序的范围中找到目标的数。这道题也就是要找到最大的合金数。 最基本的二分查找题目就是找到具体的那个数,等不等于那个数就是作为限制条件。 那这一题呢就是花费要小于限定值。 …

Spring中没有注入而是new导致空指针异常

Spring中没有注入而是new导致空指针异常,遇到问题不要慌,根据断点一步一步找错误的地方背景: 在BeforeSave_2250042中调用了一个公共模块CommonVerifyHandler的verifySeal()方法,但是运行时显示空指针异常 空指针异常:CommonVerifyHandler类: @Component public class Co…

SpringBoot简易教程

SpringBoot简易教程(01):SpringBoot基础入门 SpringBoot简易教程(02):SpringBoot配置文件详解 SpringBoot简易教程(03):SpringBoot整合ssm SpringBoot简易教程(04):SpringBoot单元测试 SpringBoot简易教程(05):SpringBoot开发Restful API及使用jmeter测试 Sprin…

每日一图——2024/1/25

每日一图——终于升温了本文来自博客园,作者:{Mr Q},转载请注明原文链接:https://www.cnblogs.com/Layout-QJS/p/17990976

邮局问题

这个DP方法一定不会遗漏最优解 我们假设最优解中,第\(j\)个邮局管辖的村庄集合是\(S\),那么以\(S\)中横坐标最小的村庄为分界点,这个分界点一定会被枚举到的,而且由于这个方案是最优解,如果我们把第\(j\)个邮局放在中位数那里,其他村庄的管辖是不会变的(否则就不是最优解…

性能测试-性能压测脚本的生成以及完善和增强

1.通过JMeter代理服务器录制脚本 (1)设置客户端的代理

Error: EPERM: operation not permitted, mkdir F:\——因权限不够报错

我的报错内容如上图 在网上找了很多解决办法,如下: 下面的方案我都试过了,最终是成功了 方案一:以管理员身份运行方案二:重新配置环境变量 将npm安装的全局模块所在的路径,以及缓存cache的路径放在其他目录中【试了,再执行方案一成功了】 因为我没有截图,把我搜到的解决…

2024年1月Java项目开发指南14:关于post中的body和param以及java中的@RequestBody和@RequestParam

在HTTP请求中,POST方法通常用于向服务器发送数据,这些数据可以在请求的body中,也可以在URL的param中。不过,这两者的使用方式和适用场景是不同的。 Body:在POST请求中,body主要用于包含要发送到服务器的数据。这些数据通常是表单数据、JSON数据或其他类型的数据。当你需要…
推荐文章