anchor.diff:  
   function TDiocpCustomContext.IncReferenceCounter(pvDebugInfo: string; pvObj:
       TObject): Boolean;
  -begin
  -  Assert(Self<> nil);
  -  DoCtxStateLock({$IFDEF DIOCP_DEBUG}'IncReferenceCounter:' + pvDebugInfo{$ENDIF});
  -  try
  -    if (not Active) or (FRequestDisconnect) then
  -    begin
  -      Result := false;
  -    end else
  -    begin
  -      Inc(FReferenceCounter);
  -      {$IFDEF DIOCP_DEBUG}
  -      if Length(pvDebugInfo) > 0 then
  -        AddDebugStrings(Format('+(%d):%d,%s', [FReferenceCounter, IntPtr(pvObj), pvDebugInfo]));
  -      {$ENDIF}
  -
  -      Result := true;
  -    end;
  -  finally
  -    DoCtxStateUnLock;
  -  end;
  +var
  +  r:Integer;
  +begin
  +   Assert(Self<> nil);
  +   if FReferenceCounter < 0 then
  +   begin
  +     Result := false;
  +     Exit;
  +   end;
  +
  +   r := AtomicIncrement(self.FReferenceCounter);
  +   if r > 0 then
  +   begin
  +     Result := True;
  +   end else
  +   begin
  +     // һ㲻ᵽ
  +     AtomicDecrement(self.FReferenceCounter);
  +   end;
  +
  +
  +
  +//  DoCtxStateLock({$IFDEF DIOCP_DEBUG}'IncReferenceCounter:' + pvDebugInfo{$ENDIF});
  +//  try
  +//    if (not Active) or (FRequestDisconnect) then
  +//    begin
  +//      Result := false;
  +//    end else
  +//    begin
  +//      Inc(FReferenceCounter);
  +//      {$IFDEF DIOCP_DEBUG}
  +//      if Length(pvDebugInfo) > 0 then
  +//        AddDebugStrings(Format('+(%d):%d,%s', [FReferenceCounter, IntPtr(pvObj), pvDebugInfo]));
  +//      {$ENDIF}
  +//
  +//      Result := true;
  +//    end;
  +//  finally
  +//    DoCtxStateUnLock;
  +//  end;
   
   end;
   
  
positive.code:     WORD);
  begin
    
  end;
  
  procedure TDiocpCustomContext.postNextSendRequest;
  
negative.code:     // Ƿִйر
      function CheckCloseContext: Boolean;
    private
      // ر¼
      FCloseRequest:TIocpActionRequest;
      FReqDisFlag:Integer;
      procedure PostCloseRequest;
      procedure OnCloseRequestResponse(Sender: TObject);
    private
      {$IFDEF DIOCP_DEBUG}
      FCheckThreadInDebugInfo:String;
      FDebugLocker:Integer;
  