我有两个关于STL的问题
1)为什么STL不是线程安全的?是否有任何线程安全的结构?
2)如何使用GDB调试STL?在GDB中,如何打印矢量?
答案 0 :(得分:3)
vector
包含连续的内存块。因此,一旦找到指向此内存块的指针,它就可以以与常规数组相同的方式显示。具体细节取决于您使用的STL实现。答案 1 :(得分:3)
标准c ++容器不是线程安全的,因为您最有可能实际上需要更高级别的锁定,而不仅仅是容器本身。换句话说,您可能希望两个或更多操作一起安全。
例如,如果您运行多个线程:
v.push_back(0);
v.push_back(1);
你不会得到一个交替0和1的漂亮向量,它们可能是混乱的。你需要锁定这两个命令才能得到你想要的东西。
答案 2 :(得分:1)
STL不是线程安全的,因为很多人不需要线程安全,因为这会将线程上下文引入到类中,否则无需了解线程的概念。
您可以封装对容器的访问权限并提供您自己的线程安全性(或您的特定设计和实现所强加的其他限制。)
答案 3 :(得分:1)