一、利用std::thread 实现多线程

1.针对普通函数的多线程

std::thread thread1(fun1,参数1,参数2,...,参数n);
std::thread thread2(fun2,参数1,参数2,...,参数n);

使用join()函数阻塞等待线程执行完:

thread1.join();
thread2.join();

使用detach()分离子线程,主线程不被阻塞继续执行

thread1.detach();
thread2.detach();

2.针对类的成员函数实现多线程

类名1 *对象1;
类名2 *对象2
std::thread th1(&类名1::成员函数,对象1,参数1,参数2,...,参数n);std::thread th2(&类名2::成员函数,对象2,参数1,参数2,...,参数n);

也可以使用std::ref()函数来引用:

std::thread th1(&类名1::成员函数,对象1,std::ref(参数1),std::ref(参数2),...,std::ref(参数n));

同样可以使用 join()detach()函数来进行操作。

二、利用openmp实现多线程

CMakeLists.txt的写法:

#******openMP 多线程****
find_package(OpenMP REQUIRED)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} ")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")

包含的头文件:

#include <omp.h>

1.多线程

//设置使用的线程数

omp_set_num_threads(4);

可以使用omp_get_thread_num()来查看分配的线程号;

#pragma omp parallel {多线程执行的代码;std::cout<<"cnn:"<<omp_get_thread_num()<<std::endl;}

大括号中的代码就会被执行4次,另外可以设置omp_set_num_threads()来设置线程数

另外可以使用 #pragma omp parallel sections 关键字定义多线程的块:
设置omp_set_num_threads(2),定义几个sections就至少设置为多少个线程;

 # pragma omp parallel sections{//*****线程1:******//#pragma omp section{代码1;std::cout<<"cnn:"<<omp_get_thread_num()<<std::endl; //查看分配的线程}//*****线程2:******//#pragma omp section{代码2;std::cout<<"cnn:"<<omp_get_thread_num()<<std::endl;}}

2.针对for循环多线程

首先可以设置使用的线程数

omp_set_num_threads(4);

方法1:

使用关键词:#pragma omp parallel for

#pragma omp parallel for
for(int i=0;i<10;i++)std::cout<<"i is :"<<i<<std::endl;

方法2:

先使用 #pragma omp parallel声明:
再使用#pragma omp for定义for循环体;

#pragma omp parallel {#pragma omp forfor()#pragma omp forfor()}

错误写法:

#pragma omp parallel {#pragma omp parallel for for()}

《C++(三)--多线程方法总结》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 致被套基民:老基民的四点教训七点经验(ZT)
  2. 集成测试_渐增与非渐增模式优缺点
  3. JVM学习笔记之四:分代垃圾回收
  4. 监听列表ListVIew的滑动状态
  5. php 命名空间实现的原理,php命名空间实现的理解
  6. php微信自动登录,利用php怎么实现一个自动登录微信并获取昵称的功能
  7. 核酸检测小程序实战教程
  8. 创建一个HashMap 集合,存储省份下的城市,key是为省份 value 是为该省份下的城市
  9. 程序人生 - 座位险和驾乘险有什么区别,买了后者还需要前者吗?
  10. MySQL联合索引以及索引顺序优化
  11. 工商银行携手数美科技,赋能数字化业务高质量发展
  12. HEVC学习-帧内预测-initAdiPattern函数
  13. MEMS传感器的6大种类简介-传感器专题
  14. 计算机桌面出现模糊窗口,显示屏模糊,教您怎么解决电脑屏幕模糊
  15. 【论文写作】如何写科技论文?万能模板!!!(以IEEE会议论文为例)
  16. QCC3040 USB Composite Device: Audio+HID+CDC/虚拟串口
  17. 二十三、从句_地点原因方式条件状语从句
  18. 怎么用matlab画双8曲线,MATLAB画双纵轴曲线。
  19. EagleSite网站建设系列-(PC+WAP)蛋糕面包食品类网站模板 美食点心食品糕点类网站
  20. 高性能开发十大核心技术

热门文章

  1. 计算机一级b考试电子表格,计算机等级考试一级B第1-50套题
  2. mysql数据库封装类_基于mysqli封装的数据库类
  3. Button的UseSubmitBehavior屬性
  4. 使用Junit对Android应用进行单元测试
  5. [译]C#控制管理VisualSVN Server
  6. 怎样用DNSPod做负载均衡?
  7. Java的世界如此美妙
  8. 内部人示范(野生项目笔记02)
  9. 2022 SpringBoot/SSM的药品售货机平台 H5药品购买商城
  10. SpringBoot 轻量级英文版个人博客 flame