C++ 并发编程1
2024-10-18 05:06:50
一个简单的并发编程的举例
#include <iostream>
#include <thread>
using namespace std;
void hello(){
cout << "Hello Concurrent World\n";
}
int main(){
thread t(hello);
t.join();
return 0;
}
编译指令为g++ -o test <C++文件名> -std=c++11 -lpthread
头文件thread,管理线程和类在<thread>中声明。
其次,打印信息的代码被移动到了一个独立的函数hello中,因为每个线程都必须具有一个初始函数,线程的执行从这里开始。在上面的例子中线程std::thread的对象拥有新函数hello()作为其初始函数。
第三,join()函数是等所有线程结束,然后结束初始进程结束,如果没有这个函数,将导致进程混乱。这个时候两种处理方式。
1等待线程完成,则是t.join();
2让线程继续工作,初始线程结束,这需要将线程分离,所以就要用t.detach()
注意点:
1、注意声明:std::thread my_thread(background_task())
这里相当于声明了一个名为my_thread的函数,这个函数带有一个参数(函数指针指向没有参数并返回background_task对象的函数),返回一个std::thread对象的函数,而不是启动了一个线程
要是启动线程,则有下面两种方式
thread my_thread((background_task()));
thread my_thread{background_task()}
最新文章
- RBAC用户权限管理数据库设计
- “胡”说IC——菜鸟工程师完美进阶
- JsonConvert 使用注意事项之 Serializable
- 项目分享五:H5图片压缩与上传
- Bus Hound 的使用方法
- Oracle sysdate 时间加减
- Ubuntu常用命令大全(转)
- jquery选择器效率优化问题
- spring中Bean的注入类型
- ThinkPHP表单令牌验证功能详细介绍
- 免费WiFi,仅仅为好久没联系的你们
- .Net程序员 Solr-5.3之旅 (三)Solr 从MSSQ导入索引数据
- mysql基础之存储引擎
- Java集合ArrayList源码解读
- XAF-通知模块概述 web+win
- 详解iBaits中SqlMapClientTemplate的使用
- 528. Random Pick with Weight index的随机发生器
- 《java并发编程实战》
- finecms如何控制调用子栏目的数量
- ubuntu16.04下sublime text 3之安装和配置
热门文章
- 暑假撸系统5- Thymeleaf 常用标签的
- Python语法进阶(2)- 正则表达式
- systemd配置文件填写了ExecStop=/usr/bin/kill -9 $MAINPID之后重启在messages发生了报错
- PostgreSQL VACUUM 之深入浅出 (三)
- python数据结构:数组和列表
- 选择自助式BI平台的六大标准
- 【C#IO 操作】stream 字节流|字符流 |比特流
- 二叉树的N中遍历方式和拓展应用
- Apache Ranger 编译安装部署
- VSCode空格变成虚点