我正在编写一个应用程序,其中服务器必须跟踪来自多个客户端的连接。每个客户端都分配有一个连接 ID,它在每个数据包中发送该连接 ID 以进行识别。我想将连接 ID 映射到客户端信息。早些时候,我使用的是 std::map 但我发现它不是线程安全的。我需要一个可以在纯 C++03 中支持此功能的容器。不允许第三方库(使用实验室设备)。如果做不到这一点,请告诉我如何使用 std::map 和某种锁定来实现这一点
让我们调用数据结构信息。有 2 个线程在运行,(分别用于发送和接收)。他们对信息执行以下操作:-
recv_thread {
//read id
if(id == 0) info.insert(0,clientdata);
else {
do stff, update info[id]
}
send_thread {
for each key in info:
if (key==0) {
delete info[0];
info.insert(connid, clientdata);
}
else {
update info[key]
if(client taking too long) delete info[key];
}
}