我有一个客户仍在使用Visual Studio 6来构建生产系统.他们编写了使用STL并在多处理器机器上运行的多线程系统.
偶尔当他们改变其服务器机器的规格或增加其负载时,他们会"奇怪"地难以重现错误......
我知道Visual Studio 6开发存在一些问题,我想说服他们转向Visual Stuio 2005或2008(他们有Visual Studio 2005并将其用于某些项目).
此问题的目的是汇总已知问题或升级原因的列表,以及讨论或报告这些问题的链接.如果这些问题如何困扰你,那么拥有现实生活中的"恐怖故事"也会很有用.
我有指向其他对象中的元素的指针.有安全感吗?我知道当需要更多空间时,向量将移动所有对象,因此指针将无效.
mylist.push_back(MyObj中(1));
if(someCond)
{_
myLastObj =&mylist.back();
}
_myLastObj 是类型的 MyObj*
如果我使用了一个向量,该对象将被移动到另一个位置,指针将指向垃圾.列表是否安全?
我想知道是否可以从stl:map中删除与find同时删除?并发意味着 - 两个线程同时尝试一个擦除,一个同时调用查找.
我有一个问题:std :: map和std :: set是否安全?我在我的多线程应用程序上使用这个集合,有时候映射和设置工作.
谢谢!
UPD.我的代码:
std::map<int, unsigned long> ClientTable;
int sendulong(int socket, char * data) //<--- Many threads uses this function
{
write(socket, ClientTable[socket]); //<--- ClientTable[[socket] <-- using of map
}
Run Code Online (Sandbox Code Playgroud)
如何修复此代码以确保线程安全?谢谢!