2 - C++标准异常与noexcept
本文将简要介绍C++的标准异常层次结构,以及noexcept
关键字。
本文将简要介绍C++的标准异常层次结构,以及noexcept
关键字。
对于简单数据(整数、布尔值等标量)的线程安全,使用原子操作就够了。但当数据更复杂且必须在多个线程中使用这些数据时,就得使用显式的同步机制。
标准库支持互斥的形式包括 互斥体类(mutex) 和 锁类,接下来看看这些类。
原子类型允许原子访问,这意味着不需要额外的同步机制就可执行并发的读写操作。没有原子操作,递增变量就不是线程安全的。因为编译器首先将值从内存加载到寄存器中,递增后再把结果保存回内存。另一个线程可能在递增操作执行中接触到内存,导致数据争用。
为使此情形线程安全且不显式地使用任何同步机制,原子类型std::atomic
便派上用场。
在C++20中引入了std::jthread
,和之前的std::thread
相比,它:
join()
,防止应用程序被意外终止本文将简要介绍一下它的用法。