灵感来自 std::string in a multi-threaded program和另一个答案(在某处看到),STL(gcc) std::string 可以通过在读取/设置值时设置一种互斥锁来阻止多线程程序。 (我的代码中没有互斥量)。
hive 思维,请回答我:这是真的吗?如果可能的话,我如何在 gdb 的回溯中检测互斥锁的使用?
最佳答案
使用写入时复制的 std::string 实现需要在进行复制的线程之间进行同步,但不需要互斥体。非阻塞同步在大多数平台上就足够了,因为大多数平台可以组织对引用计数的原子访问。
看看你的 std::basic_string<> 是如何实现的很简单,它不是那么大的代码段。我见过的大多数实现都使用短字符串优化而不是写时复制。
关于c++ - 如何分析基于 C++ STL 的程序以检测 STL 互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528848/