public void begin(){
  Operation op=currOp.get();
  if (op != null) {
    op.reentries++;
    return;
  }
  op=new Operation();
  currOp.set(op);
  for (; ; ) {
    Operation prev=head.get();
    op.previous(prev);
    if (head.compareAndSet(prev,op)) {
      prev.next(op);
      break;
    }
  }
}

public void begin ( ) { Operation op = currOp . get ( ) ; if ( op != null ) { op . reentries ++ ; return ; } op = new Operation ( ) ; currOp . set ( op ) ; for ( ; ; ) { Operation prev = head . get ( ) ; op . previous ( prev ) ; if ( head . compareAndSet ( prev , op ) ) { prev . next ( op ) ; break ; } } }
begins concurrent memory operation .
