当前位置: 首页 > news >正文

c++ 中多线程的使用

如果你的其他逻辑必须在线程 t1t2 之后执行,但你又希望这些线程能够同时运行,你可以在主线程中使用 std::thread::detach 将线程分离,让它们在后台运行。这样,主线程不会等待这些线程的完成,而可以继续执行其他逻辑。

这里是一个示例:

#include <iostream>
#include <thread>
#include <ctime>
#include <chrono>
#include <windows.h>void test_thread_1()
{while (true) {std::cout << "test1" << std::endl;std::this_thread::sleep_for(std::chrono::seconds(5));}
}void test_thread_2()
{while (true) {std::cout << "test2" << std::endl;std::this_thread::sleep_for(std::chrono::seconds(3));}
}int main()
{std::cout << "Hello World!\n";std::thread t1(test_thread_1);std::thread t2(test_thread_2);// 分离线程,让它们在后台运行t1.detach();t2.detach();// 执行其他逻辑,这里不会等待t1和t2的完成// 等待用户输入或其他操作,确保程序不会立即退出std::cin.get();return 0;
}

这样,t1t2 将在后台运行,主线程可以继续执行其他逻辑。请注意,一旦线程被分离,你就不能再使用 join 来等待它们的完成。但要注意,线程分离后,程序退出时这些线程可能仍在运行。确保在程序退出前适当地等待或结束这些线程。

http://www.lryc.cn/news/274141.html

相关文章:

  • 理解二叉树的遍历(算法村第七关白银挑战)
  • 所有单片机使用的汇编语言是统一的吗?
  • C ++类
  • STM32疑难杂症
  • GIT使用简介
  • easycode 插件配置文件
  • elasticsearch系列四:集群常规运维
  • 6.6 会话与输入事件(三)
  • 【自动化测试总结】优点、场景、流程、项目人员构成
  • 杨中科 ASP.NETCore Rest
  • RTU数据采集终端
  • 双指针--- 数组元素的目标和
  • 你的网站或许不需要前端构建(二)
  • flutter 使用adb 同时连接 多个模拟器
  • 网络四元组
  • [实践总结] 限制正则表达式匹配次数/时间 防止DoS攻击
  • ffmpeg 5.0版本调试 ffmpeg 5.01 static版本
  • 应用在游戏机触摸屏中的触摸感应芯片
  • D-Link DES-108 交换机
  • VIT用于图像分类 学习笔记(附代码)
  • MongoDB Certified Associate Developer 认证考试心得
  • 基于Java车间工时管理系统(源码+部署文档)
  • 2024.1.5
  • 水库大坝安全监测设计与施工经验
  • 媒体捕捉-拍照
  • Typora+PicGo+Gitee构建云存储图片
  • 【话题】ChatGPT等大语言模型为什么没有智能2
  • 通过大量生物、地球、农业、气象、生态、环境科学领域中案例,一起探索如何优雅地使用大模型吧!
  • slf4j+logback源码加载流程解析
  • KVM虚拟机部署K8S重启后/etc/hosts内容丢失