anchor.diff:    begin
       FLogWorker.FNotify.SetEvent;
     end;
  +  SetCurrentThreadInfo(Name +  ':logMessage CheckForWorker - 2.0');
   end;
   
   constructor TSafeLogger.Create;
  
positive.code: var
    lvPData:TLogDataObject;
  begin
    if not FEnable then exit;
  
    if not (pvLevel in FLogFilter) then Exit;
  
    try
      lvPData :=TLogDataObject(__dataObjectPool.DeQueueObject);
      if lvPData = nil then lvPData:=TLogDataObject.Create;
    {$IFDEF MSWINDOWS}
      lvPData.FThreadID := GetCurrentThreadId;
    {$ELSE}
      lvPData.FThreadID := TThread.CurrentThread.ThreadID;
    {$ENDIF};
      lvPData.FTime := Now();
      lvPData.FLogLevel := pvLevel;
      lvPData.FMsg := pvMsg;
      lvPData.FMsgType := pvMsgType;
      // dataQueueֻö
      FDataQueue.EnQueueObject(lvPData, raNone);
  
    {$IFDEF MSWINDOWS}
      InterlockedIncrement(FPostCounter);
    {$ELSE}
      TInterlocked.Increment(FPostCounter);
  
    {$ENDIF}
    {$IFDEF MSWINDOWS}
      if (FAppendInMainThread) and (FSyncMainThreadType = rtPostMessage) then
      begin
        if not isWorking then
        begin
          PostMessage(FMessageHandle, WM_NOTIFY_WORK, 0, 0);
        end;
      end else
      begin
        CheckForWorker;
      end;
    {$ELSE}
      CheckForWorker;
    {$ENDIF};
    except
      on E:Exception do
      begin
        SafeWriteFileMsg(Format(STRING_ERR_POSTLOGERR, [pvMsg, e.Message]), 'sfLogger_err_');
      end;
    end;
  end;
  
  
negative.code: 
  procedure TSafeLogger.CheckForWorker;
  begin
    SetCurrentThreadInfo(Name +  ':logMessage CheckForWorker - 1.0');
    if AtomicCmpExchange(FWorkerAlive, 1, 0) = 0 then
    begin
      if FLogWorker = nil then
  