我正在编写一个应用程序,其中服务器必须跟踪来自多个客户端的连接。每个客户端都分配了一个连接ID,它将在每个数据包中发送以进行标识。我想将连接ID映射到客户端信息。早些时候,我使用std :: map,但我发现它不是线程安全的。我需要一个可以在纯C++ 03中支持此功能的容器。没有第三方库允许(使用实验室设备)。如果没有这个,请告诉我如何使用std :: map和某种锁定来实现这一点。我们调用数据结构info.There有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];
}
}
如果您使用的是C++ 11,请考虑检查http://en.cppreference.com/w/cpp/thread – 2013-02-20 18:51:32
不可以。也许我应该添加,古老的实验室电脑:) – 2013-02-20 20:12:54