查看: 87|回复: 1

并行计算7:C++多线程1→ 概述

[复制链接]

3

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2022-12-2 19:00:28 | 显示全部楼层 |阅读模式
前面的文章介绍了基于OpenMP的并行程序编写方法,该方法具有实现并行的代码少增量并行化实施容易跨平台支持等优点但OpenMP也有一些不足,比如不自动检查竞赛条件、不适用于分布式存储系统,不直接支持并行I/O。从本节开始将介绍基于C++11的并行编程方法,它与OpenMP都属于并行计算模型中的线程模型(专栏第三篇)。

1  线程库
1.1 POSIX Threads (Pthreads)
(1) 头文件:#include <pthread.h>
(2) 特点:

  • 允许访问共享内存平台上的低级特性
  • 与高级API相比,代码行数更多
  • 增量并行不方便
(3) 示例


1.2 C++11 Threads
传统的C++中并没有线程这个概念,在C++11出来之前,如果想要实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h> 。
C++11提供了语言层面上的多线程,解决了跨平台的问题,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。
(1) 头文件:#include <thread>
(2) 特点:
POSIX线程API比较难用,需要许多附加代码,C++11中提供了另一种使用线程的方法,与C++及其特性很好地集成,入门相对容易。
(3) 示例


C++11 新标准中引入了5个头文件来支持多线程编程,如下图所示



参考:

  • 一文详解C++多线程_非晚非晚的博客-CSDN博客_c++多线程
  • C++ 多线程 | 菜鸟教程
  • C++ std::thread | 菜鸟教程
  • zizbee:C++多线程并发基础入门教程
  • GitHub - anthonywilliams/ccia_code_samples: Code samples for C++ Concurrency in Action
  • https://beefnoodles.cc/assets/book/C++%20Concurrency%20in%20Action.pdf
  • https://www.cse-lab.ethz.ch/wp-content/uploads/2021/11/TLP-OpenMP-I.pdf
回复

使用道具 举报

5

主题

11

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2025-3-25 19:19:32 | 显示全部楼层
站位支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表