C++11 多线程(stdthread)详解

本文详细介绍了C++11中的多线程编程,包括std::thread的构造与成员函数,以及如何创建和使用线程。讲解了std::mutex和std::atomic在多线程环境下处理共享变量的重要性,并通过实例展示了它们的使用。此外,还讨论了std::async和std::future在异步编程中的应用,解释了如何获取线程返回值和控制线程同步。最后,提到了std::this_thread命名空间中的函数,用于线程自身的控制。
摘要由CSDN通过智能技术生成

注:此教程以 Visual Studio 2019 Version 16.10.3 (MSVC 19.29.30038.1) 为标准,大多数内容参照cplusplus.com里的解释
此文章允许转载,但请标明出处(https://blog.csdn.net//article/details/118861539)

前方高能:本文字数接近2万

文章目录

线程?进程?多线程?

什么是多线程?

百度百科中的解释:

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

进程与线程的区别

定义:

进程是正在运行的程序的实例,而线程是是进程中的实际运作单位。

区别:

  • 一个程序有且只有一个进程,但可以拥有至少一个的线程。
  • 不同进程拥有不同的地址空间,互不相关,而不同线程共同拥有相同进程的地址空间。

看了上述介绍,你应该明白进程与线程的区别了。什么,还不明白?下面这幅图应该能让你搞清楚:
进程与线程的区别
(自己画的图,不好看请见谅)

C++11的std::thread

在C中已经有一个叫做pthread的东西来进行多线程编程,但是并不好用 (如果你认为句柄、回调式编程很实用,那请当我没说),所以c++11标准库中出现了一个叫作std::thread的东西。

std::thread常用成员函数

构造&析构函数

函数

类别

作用

thread() noexcept

默认构造函数

创建一个线程,
什么也不做

template <class Fn, class… Args>
explicit thread(Fn&& fn, Args&&… args)

初始化构造函数

创建一个线程,
args为参数
执行fn函数

thread(const thread&) = delete

复制构造函数

(已删除)

thread(thread&& x) noexcept

移动构造函数

构造一个与x
相同的对象,会破坏x对象

~thread()

析构函数

析构对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值