程序运行过程中难免会遇到错误,C++语言提供了一个名为“异常”的特性,用来处理这些不正常但能预料到的情况。

本文将简要介绍C++异常是什么,以及它的优点等内容。

阅读全文 »

对于简单数据(整数、布尔值等标量)的线程安全,使用原子操作就够了。但当数据更复杂且必须在多个线程中使用这些数据时,就得使用显式的同步机制。

标准库支持互斥的形式包括 互斥体类(mutex)锁类,接下来看看这些类。

阅读全文 »

原子类型允许原子访问,这意味着不需要额外的同步机制就可执行并发的读写操作。没有原子操作,递增变量就不是线程安全的。因为编译器首先将值从内存加载到寄存器中,递增后再把结果保存回内存。另一个线程可能在递增操作执行中接触到内存,导致数据争用。

为使此情形线程安全且不显式地使用任何同步机制,原子类型std::atomic便派上用场。

阅读全文 »

在C++20中引入了std::jthread,和之前的std::thread相比,它:

  • 在析构函数中自动join(),防止应用程序被意外终止
  • 支持所谓的协作式取消,即这种线程需要定期检查它是否需要取消自己

本文将简要介绍一下它的用法。

阅读全文 »
0%