我有一个问题: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)
如何修复此代码以确保线程安全?谢谢!
这取决于你想做什么.如果你所做的只是从他们那里读书,那么是的.如果你也写信给他们并且一个单独的线程尝试做任何其他事情,或者有生命迭代器,它将无法按预期工作.