c++ - 如何分析基于 C++ STL 的程序以检测 STL 互斥锁?

标签 c++ stl mutex

灵感来自 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/

相关文章:

c++ - Android NDK C++ 代码的内存调试工具

c++ - 使用 condition.wait() 时出现死锁

c++ - 作为键的 vector 如何在 C++ 内部工作?

c++ - 递减结束迭代器

c - pthread 互斥体中的意外行为

c++ - 需要结构包含/实现帮助(第 2 部分)C++

c++ - std::list 对其分配器参数有何作用?

c++ - 在容器上(循环期间)重复调用 size() 是否不好?

java - 在java中获取win32互斥锁

Java 非重入锁实现