我已经得到了被称为每当新的数据是可用的回调方法:线程安全异步字节队列
public delegate void DataCallback(
byte[] buffer,
int offset,
int count);
我想实现类似于此接口的类来包装这个:
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
)
这就是我正在寻找,我认为应该可以修改这个以优化字节[]。不幸的是,该接口需要我实现Begin/EndRead方法...... – dtb 2009-05-21 15:06:33