nicko       2004/05/16 14:15:15

  Modified:    src/DateFormatter AbsoluteTimeDateFormatter.cs
  Log:
  Added locking to date formatter where the shared static buffer is written to.
  
  Revision  Changes    Path
  1.4       +18 -8     
logging-log4net/src/DateFormatter/AbsoluteTimeDateFormatter.cs
  
  Index: AbsoluteTimeDateFormatter.cs
  ===================================================================
  RCS file: 
/home/cvs/logging-log4net/src/DateFormatter/AbsoluteTimeDateFormatter.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbsoluteTimeDateFormatter.cs      23 Feb 2004 03:18:03 -0000      1.3
  +++ AbsoluteTimeDateFormatter.cs      16 May 2004 21:15:15 -0000      1.4
  @@ -96,19 +96,29 @@
                        // the previously calculated time string
                        if (s_lastTimeToTheSecond != currentTimeToTheSecond)
                        {
  -                             // We are in a new second.
  -                             s_lastTimeToTheSecond = currentTimeToTheSecond;
  -                             s_lastTimeBuf.Length = 0;
  +                             // lock so that only one thread can use the 
buffer and
  +                             // update the s_lastTimeToTheSecond and 
s_lastTimeString
   
  -                             // Calculate the new string for this second
  -                             FormatDateWithoutMillis(dateToFormat, 
s_lastTimeBuf);
  +                             // PERF: Try removing this lock and using a new 
StringBuilder each time
  +                             lock(s_lastTimeBuf)
  +                             {
  +                                     if (s_lastTimeToTheSecond != 
currentTimeToTheSecond)
  +                                     {
  +                                             // We are in a new second.
  +                                             s_lastTimeBuf.Length = 0;
   
  -                             // Store the time as a string (we only have to 
do this once per second)
  -                             s_lastTimeString = s_lastTimeBuf.ToString();
  +                                             // Calculate the new string for 
this second
  +                                             
FormatDateWithoutMillis(dateToFormat, s_lastTimeBuf);
  +
  +                                             // Store the time as a string 
(we only have to do this once per second)
  +                                             s_lastTimeString = 
s_lastTimeBuf.ToString();
  +                                             s_lastTimeToTheSecond = 
currentTimeToTheSecond;
  +                                     }
  +                             }
                        }
                        writer.Write(s_lastTimeString);
        
  -                     // Append the current milli info
  +                     // Append the current millisecond info
                        writer.Write(',');
                        int millis = dateToFormat.Millisecond;
                        if (millis < 100) 
  
  
  

Reply via email to