Я студент и хочу понять синхронизацию между потоками.
У меня есть две темы t1 и t2.
У меня есть общий кусок памяти между ними.
/*e.g.*/ std::map<std::string, std::string> data;
Один поток, скажем, t1 читает данные, а другой пишет ..
std::mutex mu; //is used for synchronization
std::string read_1(std::string key)
{
return data[key];
}
std::string read_2(std::string key)
{
mu.lock();
return data[key];
mu.unlock();
}
void write(std::string key, std::string value)
{
mu.lock();
data[key] = value;
mu.unlock();
}
read_1 это потокобезопасно?
если нет, то как лучше оптимизировать этот код?
спасибо.