我的问题可能很常见,但它让我发疯:
我有一个多线程应用程序,其中有5个线程。其中4个线程执行它们的任务,例如网络通信和本地文件系统访问,然后将它们的输出都写入该数据结构中:
struct Buffer {
std::vector<std::string> lines;
bool has_been_modified;
}
第5个线程将这些缓冲区/结构打印到屏幕上。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();
}
我如何在缓冲区正在进行读写操作时保护它们不被覆盖?
虽然我认为这应该是一个很普遍的问题,但我找不到合适的解决方案。
谢谢。