Il mio problema è abbastanza comune, suppongo, ma mi fa impazzire:Come creare buffer di sicurezza thread-safe/POD?
Ho un'applicazione multi-thread con 5 thread. 4 di questi fili fanno il loro lavoro, come le comunicazioni di rete e di accesso file system locale, e quindi tutti scrivono loro uscita ad una struttura di dati di questa forma:
struct Buffer {
std::vector<std::string> lines;
bool has_been_modified;
}
The 5th stampe discussione questi buffer/strutture allo schermo:
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();
}
Come proteggo i buffer vengano sovrascritti mentre sono in corso o letti o scritti a?
Non riesco a trovare una soluzione adeguata, anche se penso che questo deve essere un problema comune silenzioso.
Grazie.
uso [mutex] (http://en.cppreference.com/w/cpp/thread/mutex) – Diego
Grazie per la risposta. Non ho molta esperienza nel multi threading. Potresti fare un breve esempio? – dummy
C'è qualche ragione particolare per cui stai chiedendo un POD? (nota che la risposta attualmente accettata non descrive un POD) – Hurkyl