我有一个问题:std :: map和std :: set线程安全吗?我在多线程应用程序上使用此集合,有时会映射并设置耗损的工作。
谢谢!
更新。我的代码:
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
}
如何修复此代码以确保线程安全?
谢谢!
最佳答案
C ++标准对此一无所获。1您将不得不查看所使用的标准库的特定实现的文档。但是很有可能它不是线程安全的,因此您需要自己进行同步。
(如果您想知道该怎么做,那是一个不同的问题主题...)
1. C11之前的版本。