Si j'ai une application qui produit des données lentement mais qui les consomme rapidement, serait-ce un bon candidat pour une double implémentation de buffer? L'idée de base serait que le producteur remplisse le tampon arrière pendant que le consommateur traite le tampon avant. Je ne veux pas que le client apparaisse comme s'il attendait des données. Je veux équilibrer la production et la consommation. Comment puis-je réaliser cette fonctionnalité? Même si j'ai un thread de buffer arrière ... il devra être synchronisé avec le thread buffer avant donc le buffer frontal sait quand il y a de nouvelles données (buffers swappés). Si le thread du tampon arrière prend trop de temps à produire ses données, le tampon avant devra attendre pour le traiter.double buffer design E/S de synchronisation
void fill_back_buffer() {
//wait to fill buffer
//fill back buffer
//swap buffers and notify other thread
}
void process_data() {
//wait to see if buffers have been swapped
//buffers been swapped so send data out
//while sending data out start filling back buffer with new data
}
oui. C'est bon si c'est lent. Ce que j'essaie vraiment de réaliser, c'est une synchronisation correcte, de sorte que le temps soit partagé entre le producteur et le consommateur. Je réalise que ma question était vague. Merci pour la contribution. –