void QueueRead(BufferedIO io, DiskIOCallback callback)
{
io.Callback = callback;
if (Thread.CurrentThread == IOLoop.Thread) {
PerformRead(io);
_cache.Enqueue (io);
}
else
lock (_bufferLock)
{
_bufferedReads.Enqueue(io);
if (_bufferedReads.Count == 1)
IOLoop.Queue(_loopTask);
}
}