我知道,从根本上讲,在 C++ 中使用类不是线程安全的,因为它们的函数不是原子的,这可能会导致竞争条件。
在学习在类中编写多线程程序时,我们必须包装在互斥体中读取/写入对象的关键部分,以确保原子性。在花时间阅读了一些标准库之后,我很好奇为什么 C++ 不自动为用户执行此操作。
我的理解是,互斥体只包含一个布尔值或整数来表示锁的状态,以及某种形式的队列来表示等待锁的所有线程。鉴于这并不是很大的开销,为什么标准库不自动提供这种抽象并用仅该类本地的互斥体(即不是全局互斥体)包装其所有函数?
c++ multithreading std
c++ ×1
multithreading ×1
std ×1