首页 > 编程语言 >c++线程--快速上手

c++线程--快速上手

时间:2024-09-29 18:13:48浏览次数:7  
标签:执行 detach thread -- c++ 线程 include

线程创建

头文件#include thread 是在 C++11 标准中引入的。

C++11 标准引入了对多线程编程的标准化支持,其中包括了线程的创建、管理和同步机制。

头文件提供了基本的线程支持库,允许开发者直接使用c++线程进行并行编程,而无需依赖操作系统特定的 API

#include <iostream>
#include <thread>
using namespace std; 
void hello() { 
  cout << "Hello World from new thread." << endl;
}

int main() {
  thread t(hello); 
  t.join(); 
  return 0;
}
  • 为了使用多线程的接口,我们需要#include 头文件。新建线程的入口是一个普通的函数,它并没有什么特别的地方。

  • 创建线程的方式就是构造一个thread对象,并指定入口函数。与普通对象不一样的是,此时编译器便会为我们创建一个新的操作系统线程,并在新的线程中执行我们的入口函数。

int main() {
  thread t([] {
    cout << "Hello World from lambda thread." << endl;
  });

  t.join();

  return 0;
}
  • 也可以直接使用lambda表达式

join & detach

API 说明
join 等待线程完成其执行
detach 不等待,允许线程独立执行
  • join:调用此接口时,当前线程会一直阻塞,直到目标线程执行完成(当然,很可能目标线程在此处调用之前就已经执行完成了,不过这不要紧)。因此,如果目标线程的任务非常耗时,你就要考虑好是否需要在主线程上等待它了,因此这很可能会导致主线程卡住。

  • detach:detach是让目标线程成为守护线程(daemon threads)。一旦detach之后,目标线程将独立执行,即便其对应的thread对象销毁也不影响线程的执行。并且,你无法再与之通信

标签:执行,detach,thread,--,c++,线程,include
From: https://www.cnblogs.com/niumachen/p/18440541

相关文章

  • 《密码系统设计》第四周
    第四周预习报告学习内容HeadFirstC嗨翻C语言第5章《WindowsC/C++加密解密实战》第6,8,13,14章重点第14章,第6章了解,第8,13参考课程mindmap报告内容参考第一周AI对学习内容的总结(1分)要求让AI阅读学习内容并进行总结总结1.HeadFirstC嗨翻C语言第......
  • .net 6和.net core 和.net framework 之间是什么关系
    ‌.NET 6、.NETCore和.NETFramework都是Microsoft开发的开发平台,但它们之间存在明显的区别和联系。‌‌.NETFramework‌是微软最早开发的开发平台,专为Windows设计,不支持跨平台运行。它为Windows应用提供了坚实的基础,但限制在了Windows操作系统上。‌.NETCore‌是.NET......
  • iLogtail 进化论:重塑可观测采集的技术边界
    作者:余韬(迅飞)采集代理发展回顾iLogtail作为一款开创性的轻量级日志采集器,历经13载风雨,始终致力于高效地从多元化的数据源中萃取、处理可观测信息,并无缝传输至阿里云日志服务或各类日志分析平台。今年,适逢iLogtail开源两周年的里程碑时刻,我们将回顾iLogtail的技术演进之......
  • callable类型 是什么?
    在C++中,callable类型(可调用类型)是指可以像函数一样被调用的对象C++中有多种不同的可调用对象类型,它们可以通过函数调用运算符()被调用。常见的callable类型包括:普通函数(普通函数、静态函数、成员函数)函数指针仿函数(函数对象)Lambda表达式std::function类型1.......
  • 「CSP-J」做题记录
    「CSP-J」做题记录记号:A:自己做出来的。B:看题解提示做出来的。C:对着题解做出来的。[CSP-J2019江西]道路拆除(A)我们可以把问题转化一下:求出最少要留下多少边,使得从首都出发,能到达\(s_1\)号与\(s_2\)号城市,且所要花费的最短时间分别不超过\(t_1\)与\(t_2\)。最终答......
  • Can you answer these queries III(单点修改线段树)
    因为洛谷出现UE在acwing提交,输入格式略有修改#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefvector<string>VS;typedefvector<int>......
  • 「CSP-S」 做题记录
    「CSP-S」做题记录[CSP-S2019江西]多叉堆自己做出来了,开心捏。先考虑对于一棵特定的树,如何计算答案(对应特殊性质1)。首先,根节点一定只能填\(0\)。其次,可以发现各个子树不会互相影响,所以可以分别考虑如何填各个子树。设填满以节点\(u\)为根的子树的方案数为\(f(u)\),\(......
  • java使用正则表达式验证手机号和电话号码和邮箱号码的方法
    验证手机号我国的手机号一般是以1开头,后面跟着10位数字。因此,可以用如下正则表达式:publicstaticbooleanisValidPhoneNumber(StringphoneNumber){Stringregex="^1[3-9]\\d{9}$";//适用于中国手机号returnphoneNumber.matches(regex);}验证电话号码电话......
  • Linux小tracks
    1.修改dns服务器:/etc/resolv.conf2.ssh证书连接简易操作:ssh-keygen-trsa-b2048|生成密钥对ssh-copy-idusername@remote_host|将你的公钥(通常是~/.ssh/id_rsa.pub)添加到你想要连接的服务器上的~/.ssh/authorized_keys文件中。你可以使用ssh-copy-id命令来......
  • Web服务器小项目(Linux / C / epoll)
    欢迎访问我的另一个博客:https://xingzhu.top/注意:前置知识:HTTP:https://xingzhu.top/archives/web-fu-wu-qiLinux多线程:https://xingzhu.top/archives/duo-xian-cheng源码放github上了,欢迎star:https://github.com/xingzhuz/webServer思路实现代码server.h......