私のプログラムの1つには、複数のクライアントがあり、各クライアントには独自のバッファーがあります。無限ループで、クライアントのいずれかにディスクに書き込むデータがあるかどうかを確認します。もしそうなら、私は同じことをして続行します。
さて、クライアントは実際には私の制御下にないデータ(いくつかの計算の結果)を書き込むため、動的バッファーが必要です。したがって、擬似コードは次のようになります。
//If data is ready
//Append(client_id, line)
void Append(int client_id, char *line) {
if(client_id.buffer == NULL) {
buffer = (char*)malloc(BUFFERSIZE * sizeof(char));
//Copy line into buffer
} else {
//Realloc the buffer if insufficient space and append this
//line to the existing buffer
}
}
または、他のアプローチは、単純なメッセージキューを使用することです。私は既存のキューにメッセージ(文字列)を追加し続け、それからそれらを読み上げます。他にもっと良いアプローチはありますか?