は、私は、新しいデータが利用可能であるときに呼び出されるコールバックメソッドを持っているスレッドセーフ非同期バイトキュー
public interface IDataSource
{
IAsyncResult BeginRead(
byte[] buffer,
int offset,
int size,
TimeSpan timeout,
AsyncCallback callback,
object state);
int EndRead(
IAsyncResult asyncResult);
int Read(
byte[] buffer,
int offset,
int size,
TimeSpan timeout);
}
これは明らかに古くからのプロデューサ - コンシューマの問題です。バイトはコールバックメソッドの呼び出しによって生成され、Begin/EndReadおよびReadメソッドによって消費されます。 Begin/EndReadおよびReadメソッドは、データが使用できない場合(タイムアウトが発生するまで)ブロックされます。実装では、固定サイズの内部バッファを使用する必要があるため、バッファが現在いっぱいになったときにコールバックメソッドをブロックする必要があります。
マルチスレッド化を考えると、通常は重度の頭痛が発生しますので、私の質問は次のとおりです。このようなデータ構造の実装は既に存在しますか?
は(私は非常に簡単であるべきReadメソッドを実装すると思うが、私は読んで/ EndReadを開始実装しないようにしたいと思います。Begin
/EndInvoke
。)
が何をだそのI探していますが、これを変更してbyte []に最適化できるはずです。残念ながら、インターフェイスではBegin/EndReadメソッドも実装する必要があります... – dtb