c++ cpp 在类中执行线程 进行恒定计算

2024-05-07 21:04

本文主要是介绍c++ cpp 在类中执行线程 进行恒定计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在编程中,顺序执行是常见的模式,但是对cpu的利用率不是很高,采用线程池,又太麻烦了,原因是还得不断地把任务拆分,扫描返回值。

如果 初始化n个类的时候,传递数据自身即可异步计算,那么是一个比较好的策略。

因此,我尝试在 类中开启一个线程

在这里插入图片描述

c++代码

#include <iostream>
#include <thread>
#include <chrono>
class threadrunclass {
public:threadrunclass() : log_num(0), running(true) {}void thread_run_fuc() {while (running) {std::this_thread::sleep_for(std::chrono::milliseconds(20));log_num++;}}int get_log_num() const {return log_num;}void start_thread() {std::thread th(&threadrunclass::thread_run_fuc, this);th.detach();}void stop_thread() {running = false;}~threadrunclass() {stop_thread();}private:int log_num;bool running;
};class test_class{
public:threadrunclass obj = threadrunclass();test_class() {obj.start_thread();}int get_data_fuc(){return obj.get_log_num();}
};int main(){test_class testobj = test_class();for (int i = 0; i < 5; i++) {std::this_thread::sleep_for(std::chrono::milliseconds(100));std::cout << "tts: " << testobj.get_data_fuc() << std::endl;}std::cout<<"get_curr+num "<<testobj.get_data_fuc()<<std::endl;
}// int main() {
//     threadrunclass myObject;
//     myObject.start_thread();//     // 测试代码:每隔1秒获取一次log_num的值,共获取5次
//     for (int i = 0; i < 5; i++) {
//         std::this_thread::sleep_for(std::chrono::milliseconds(200));
//         std::cout << "log_num: " << myObject.get_log_num() << std::endl;
//     }//     myObject.stop_thread();
//     return 0;
// }

模式的适用场景: 1.通讯场景 2.耗时计算

这篇关于c++ cpp 在类中执行线程 进行恒定计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968385

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详