std:map
マルチスレッド アプリケーションでの使用に問題があります。スレッドがこのオブジェクトに書き込んでいるときにマップ オブジェクトをロックする必要があります。このオブジェクトを読み取る別のスレッドは、書き込みプロセスが終了するまで並行して処理する必要があります。
サンプルコード:
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::map オブジェクトをロックして、このスレッドを正しく同期する方法は?