プロセスの標準出力 (バイナリ データ) を文字列バッファーに入れ、それを別のスレッドで使用する必要があります。
プロデューサーは次のとおりです。
while (ReadFile(ffmpeg_OUT_Rd, cbBuffer, sizeof(cbBuffer), &byteRead, NULL)){
tByte += byteRead; //total bytes
sb->sputn(cbBuffer, byteRead);
}
m_bIsFinished = true;
printf("%d bytes are generated.\n", tByte);
消費者は次のとおりです。
while (!PCS_DISPATCHER_INSTANCE->IsFinished())
Sleep(200);
Sleep(5000);
Mystringbuf* sb = PCS_DISPATCHER_INSTANCE->sb;
printf("Avail: %d\n", sb->in_avail());
コンシューマーは、プロデューサーによって生成されたのすべてのバイトを取得できないことが判明しました。( tByte <> sb->in_avail()
)
内部バッファリングの問題の一種ですか?はいの場合、stringbuf に内部バッファを強制的にフラッシュさせる方法は?