-1

ソケットからデータを読み取るためのバッファがありますが、問題があります。3 つ以上のスレッドが彼にアクセスしたいのですが、それらのマルチスレッド バッファを作成するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

それは、スレッドがソケットから何を取得することを期待しているかに完全に依存します。ソケットからのデータが 3 つのスレッドの読み取り間でスクランブルされることはまずありません。そのため、各スレッドが他のスレッドに干渉することなくソケットからバイトを読み取れるようにするだけでなく、大規模な同期が必要になります。同じことをする能力。

では、スレッドはどのように同期されるのでしょうか? それらはソケットからレコードを個別に引き出していますか? それらはすべてすべてのデータを読み取ることになっていますか? 他の何か?

それらがソケットから個別にレコードをプルしている場合は、1 つのスレッドにソケットからレコードを読み取らせ、ある種のレコード オブジェクトを作成し、それらのオブジェクトを 3 つのスレッドがアクセスできるようにスレッド セーフなキューに配置する必要があります。

スレッドがすべて同じデータを読み取ることになっている場合、各スレッドがバッファに登録するバッファがあり、バッファはすべてのリーダーの場所を追跡します。バッファーは、すべてのスレッドがデータを読み取るまでデータを保持し、すべてが読み取られるとデータを消去し、そのスペースをソケットからのデータで埋めます。

于 2012-05-22T20:15:07.017 に答える