我有一个问题: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之前的版本。

10-07 19:15
查看更多