Моя проблема довольно распространена, я полагаю, но это сводит меня с ума:
У меня многопоточное приложение с 5 потоками. 4 из этих потоков выполняют свою работу, такую как сетевая связь и доступ к локальной файловой системе, а затем все записывают свой вывод в структуру данных этой формы:
struct Buffer {
std::vector<std::string> lines;
bool has_been_modified;
}
Пятый поток печатает эти буферы/структуры на экране:
Buffer buf1, buf2, buf3, buf4;
...
if ( buf1.has_been_modified ||
buf2.has_been_modified ||
buf3.has_been_modified ||
buf4.has_been_modified )
{
redraw_screen_from_buffers();
}
Как защитить буферы от перезаписи во время чтения или записи на?
Я не могу найти правильное решение, хотя я считаю, что это должна быть спокойная общая проблема.
Спасибо.