我的多線程應用程序中使用std:map
時出現問題。當線程寫入此對象時,我需要鎖定地圖對象。同時讀取該對象的另一個線程應該購物,直到寫入過程完成。鎖定std :: map C++
示例代碼:
std::map<int, int> ClientTable;
int write_function() //<-- only one thread uses this function
{
while(true)
{
//lock ClientTable
ClientTable.insert(std::pair<int, int>(1, 2)); // random values
//unlock ClientTable
//thread sleeps for 2 secs
}
}
int read_function() //<--- many thread uses this function
{
while(true)
{
int test = ClientTable[2]; // just for test
}
}
如何鎖定此的std ::地圖對象和正確同步此線程?
你可能想改變'read_function'使用'map'的'find'成員函數,而不是'運營商[]',因爲後者實際上可以修改'地圖'。通常這是一個溫和的煩惱(最壞的情況),但在這種情況下,變得更加嚴重。 – 2012-07-08 14:06:32