データをゆっくりと生成するが、それをすばやく消費するアプリケーションがある場合、それはダブルバッファー実装の良い候補になりますか?基本的な考え方は、コンシューマーがフロントバッファーを処理している間に、プロデューサーにバックバッファーを埋めさせることです。クライアントがデータを待機しているように見せたくありません。生産と消費のバランスを取りたい。この機能を実現するにはどうすればよいですか?バックバッファスレッドがある場合でも、フロントバッファが新しいデータ(バッファが交換された)があることを認識できるように、フロントバッファスレッドと同期する必要があります。バックバッファスレッドがデータの生成に時間がかかりすぎる場合、フロントバッファはデータの処理を待機する必要があります。
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
}