c++多线程处理数据

c++查询可以调动的线程个数

#include <iostream>
#include <thread>int main() {// 查询可调动线程数量std::thread::hardware_concurrency();// 如果函数返回0,表示不支持并发,或者无法确定// 如果返回非0值,表示可以同时激活的线程数量unsigned int concurrency = std::thread::hardware_concurrency();std::cout << "可调动线程数量: " << concurrency << std::endl;return 0;
}

无返回值

在C++中处理大量数据时,可以使用多线程来提高处理速度。以下是一个简单的例子,展示了如何使用std::thread来并行处理数据集。

#include <iostream>
#include <vector>
#include <thread>// 处理单个数据项的函数
void processData(const std::vector<int>& data, int threadIndex, int threadCount) {for (size_t i = threadIndex; i < data.size(); i += threadCount) {// 对数据项进行处理// 例如:std::cout << data[i] << std::endl;}
}int main() {std::vector<int> data = {/* 初始化数据 */};const int threadCount = 4; // 假设我们想要4个线程std::vector<std::thread> threads;for (int i = 0; i < threadCount; ++i) {threads.emplace_back(processData, std::ref(data), i, threadCount);}for (auto& thread : threads) {thread.join(); // 等待所有线程完成}return 0;
}

有返回值

在C++中,创建一个有返回值的线程可以使用std::future和std::packaged_task。以下是一个简单的例子:

#include <iostream>
#include <future>
#include <thread>// 函数返回一个整数
int returnValueFunction(int value) {return value * 2;
}int main() {// 创建一个packaged_taskstd::packaged_task<int(int)> task(returnValueFunction);// 获取与task关联的未来std::future<int> result = task.get_future();// 创建线程并执行taskstd::thread t(std::move(task), 10);// 等待任务完成并获取结果int answer = result.get();std::cout << "The answer is " << answer << std::endl;// 清理线程资源t.join();return 0;
}

无返回值大数据

在这里插入图片描述

有返回值大数据


类内方法1int ConvertEntity(int  a1, double  a2,bool  a3,int  a4);//含形参和返回值要加线程的方法
类内方法2	通过线程调用类内方法1 且将结果加在类内变量里面// 定义线程要执行的函数,捕获myObject的引用auto threadFunction = [this](int a1,double a2,bool a3,int a4) {auto result = ConvertEntity(a1, a2, a3, a4);std::lock_guard<std::mutex> guard(mtx);//锁数据m_Dates.insert(m_Dates.begin(), result.begin(), result.end());};// 查询可调动线程数量std::thread::hardware_concurrency();// 如果函数返回0,表示不支持并发,或者无法确定// 如果返回非0值,表示可以同时激活的线程数量unsigned int threadCount = std::thread::hardware_concurrency();std::cout << "可调动线程数量: " << threadCount << std::endl;//获取当前时间点  auto start = std::chrono::high_resolution_clock::now();std::vector<std::list<DRW_Entity*>> _ents;int num = ents.size() / threadCount;std::vector<std::thread> threads;int startNum = 0;int endNum = 0;for (int i = 0; i < threadCount; ++i){startNum = i == 0 ? 0 : endNum;endNum = (i == threadCount - 1) ? ents.size(): (endNum + num);threads.emplace_back(threadFunction,实参1,实参2,实参3,实参4);}// 等待所有线程完成for (auto& t : threads) {if (t.joinable()) {t.join();}}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

51c大模型~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11547799 #Llama 3.1 美国太平洋时间 7 月 23 日&#xff0c;Meta 公司发布了其最新的 AI 模型 Llama 3.1&#xff0c;这是一个里程碑时刻。Llama 3.1 的发布让我们看到了开源 LLM 有与闭源 LLM 一较高下的能力。 Meta 表…

实习冲刺Day12

算法题 爬楼梯 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 递推写法 class Solution { public:int climbStairs(int n) {int num[50];//开辟一个数组num[1]1,num[2]2;for(int i3;i<n;i){num[i]num[i-1]num[i-2];}return num[n];} }; 递归写法 class Solution…

开源免费的API网关介绍与选型

api网关的主要作用 API网关在现代微服务架构中扮演着至关重要的角色&#xff0c;它作为内外部系统通信的桥梁&#xff0c;不仅简化了服务调用过程&#xff0c;还增强了系统的安全性与可管理性。例如&#xff0c;当企业希望将内部的服务开放给外部合作伙伴使用时&#xff0c;直…

头歌——数据库系统原理(数据的简单查询)

文章目录 第1关&#xff1a;基本 SELECT 查询代码 第2关&#xff1a;带限制条件的查询和表达式查询代码 第3关&#xff1a;使用 WHERE 语句进行检索代码 第1关&#xff1a;基本 SELECT 查询 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何获取数据表中指…

推荐一款可视化和检查原始数据的工具:RawDigger

RawDigger是一款强大的工具&#xff0c;旨在可视化和检查相机记录的原始数据。它被称为一种“显微镜”&#xff0c;使用户能够深入分析原始图像数据&#xff0c;而不对其进行任何更改。RawDigger并不是一个原始转换器&#xff0c;而是一个帮助用户查看将由转换器使用的数据的工…

计算机毕业设计Python+大模型股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; Python大模型股票预测系统 …

Robot Framwork 介绍与使用

文章目录 Robot Framwork 介绍Robot Framwork的安装安装robotframework-ride建立一个简单的测试用例 Robot Framwork 介绍 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者…

【RabbitMQ】01-RabbitMQ

1. MQ MQ可以有更好的并发性。 2. 安装 docker run \-e RABBITMQ_DEFAULT_USERitheima \-e RABBITMQ_DEFAULT_PASS123321 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hm-net\-d \rabbitmq:3.8-management3. 结构 4. 数据…

最新PHP校园源码系统开发(多客社区校园系统源码全套APP源码附搭建教程)

最新PHP校园源码系统开发、多客社区校园系统源码以及全套APP源码附搭建教程的需求 一、最新PHP校园源码系统开发 技术栈选择&#xff1a; 后端&#xff1a;PHP&#xff08;建议使用PHP 7.2或更高版本&#xff09;数据库&#xff1a;MySQL&#xff08;建议使用MySQL 5.6或更高版…

校招回顾 | “青春不散场,梦想正起航”,极限科技(INFINI Labs)亮相湖北工业大学 2025 秋季校园招聘会

10 月 31 日&#xff0c;极限科技&#xff08;INFINI Labs&#xff09; 受邀参加 湖北工业大学 2025 届秋季校园招聘会&#xff0c;这不仅是一次与满怀激情的青年学子们的深度碰撞&#xff0c;更是一场关于青春与未来的美好邂逅。让我们一起回顾校招现场的精彩瞬间&#xff0c;…

在使用 AMD GPU 的 PyTorch 中实现自动混合精度

Automatic mixed precision in PyTorch using AMD GPUs — ROCm Blogs 随着模型规模的增加&#xff0c;训练它们所需的时间和内存——以及因此而产生的成本——也在增加。因此&#xff0c;采取任何措施来减少训练时间和内存使用都是非常有益的。这就是自动混合精度&#xff08;…

安卓设备adb执行AT指令控制电话卡

文章目录 AT指令起源与发展&#xff1a;基本格式&#xff1a;常见应用领域及功能&#xff1a;不同设备中的应用&#xff1a; 安卓获取modem设备输入符入口安卓设备输入AT指令 AT指令 AT 指令是 Attention 的缩写&#xff0c;是一种用于控制调制解调器等通信设备的指令集。 起…

RSTP的工作过程

RSTP简介&#xff1a; 生成树协议&#xff08;STP&#xff09;用于在网络中防止环路产生&#xff0c;但 STP 的收敛速度较慢。 RSTP&#xff08;Rapid Spanning Tree Protocol &#xff09;快速生成树协议&#xff1a;RSTP 是对 STP 的改进&#xff0c;它能在网络拓扑发生变化…

Django-生成csv文件

定义&#xff1a; python中生成csv文件&#xff1a; csv文件下载&#xff1a; 事例&#xff1a; 例子&#xff1a; urls: from django.urls import path from . import views urlpatterns [path(test_csv,views.test_csv), ] views: def test_csv(request):response Htt…

使用 RabbitMQ 有什么好处?

大家好&#xff0c;我是锋哥。今天分享关于【使用 RabbitMQ 有什么好处&#xff1f;】面试题。希望对大家有帮助&#xff1b; 使用 RabbitMQ 有什么好处&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ 是一种流行的开源消息代理&#xff0c;广…

go 聊天系统项目-1

1、登录界面 说明&#xff1a;这一节的内容采用 go mod 管理【GO111MODULE‘’】的模块&#xff0c;从第二节开始使用【GO111MODULE‘off’】GOPATH 管理模块。具体参见 go 包相关知识 1.1登录界面代码目录结构 代码所在目录/Users/zld/Go-project/day8/chatroom/ 1.2登录…

Kimi出考题,考题提示词Prompt附上,培训机构试题、期中考试、人事入职试题全搞定

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI工具集1&#xff1a;大厂AI工具【共23款…

蓝牙资讯|苹果AirPods Pro 2推出听力测试、助听器和听力保护等功能

苹果推送iOS 18.1 系统版本更新&#xff0c;AirPods Pro 2 用户也在 iOS 18.1 中获得了强大的新功能。 运行固件 7B19 的 AirPods Pro 2 用户&#xff0c;搭配 iOS 18.1 系统的 iPhone&#xff0c;将获得三项强大的听力健康功能&#xff1a;听力测试、助听器和听力保护。 听力…

【unique_str 源码学习】

文章目录 &#xff11;&#xff0e;删除器定义2. operator->() 运算符重载3. add_lvalue_reference<element_type>::type 使用 基本原理这篇博主写的很详细 https://yngzmiao.blog.csdn.net/article/details/105725663 &#xff11;&#xff0e;删除器定义 deleter_…

计算机网络:网络层 —— 多播路由选择协议

文章目录 多播路由选择协议多播转发树构建多播转发树基于源树的多播路由选择建立广播转发树建立多播转发树 组共享树的多播路由选择基于核心的生成树的建立过程 因特网的多播路由选择协议 多播路由选择协议 仅使用 IGMP 并不能在因特网上进行IP多播。连接在局域网上的多播路由…