1 - 快速上手
程序运行过程中难免会遇到错误,C++语言提供了一个名为“异常”的特性,用来处理这些不正常但能预料到的情况。
本文将简要介绍C++异常是什么,以及它的优点等内容。
对于简单数据(整数、布尔值等标量)的线程安全,使用原子操作就够了。但当数据更复杂且必须在多个线程中使用这些数据时,就得使用显式的同步机制。
标准库支持互斥的形式包括 互斥体类(mutex) 和 锁类,接下来看看这些类。
原子类型允许原子访问,这意味着不需要额外的同步机制就可执行并发的读写操作。没有原子操作,递增变量就不是线程安全的。因为编译器首先将值从内存加载到寄存器中,递增后再把结果保存回内存。另一个线程可能在递增操作执行中接触到内存,导致数据争用。
为使此情形线程安全且不显式地使用任何同步机制,原子类型std::atomic
便派上用场。
在C++20中引入了std::jthread
,和之前的std::thread
相比,它:
join()
,防止应用程序被意外终止本文将简要介绍一下它的用法。
本文将会介绍如何用<thread>
线程库创建一个线程,包括使用函数指针,可调用对象等方式创建;以及线程的阻塞/挂起操作;线程参数的传递;一些概念等内容。