我正在編寫一個應用程序,其中服務器必須跟蹤來自多個客戶端的連接。每個客戶端都分配了一個連接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