override public IAsyncResult BeginRead(MemBlock key, AsyncCallback cb,
object state) {
MemBlock old_v = null;
lock( _sync ) {
//We have to hold the lock to be consistent with CompareSwap and Swap
old_v = _ht[key] as MemBlock;
}
IAsyncResult r = new LhtAsResult(state, old_v);
cb(r);
return r;
}
/** Swap the value held at key, and return the old value