I was wondering about that method the other day... Now, you made it clear: crap! 2013/4/14 Igor Stasenko <siguctua@gmail.com>
the more i learn about DateAndTime the more i lean towards completely rewriting this ... err.. crap. (yes. sorry for harsh word).
DateAndTime class>>now is not thread-safe..
now | nanoTicks msm |
nanoTicks := (msm := self milliSecondsSinceMidnight) * 1000000.
(LastTick < nanoTicks) ifTrue: [ LastTick := nanoTicks. ^ self todayAtMilliSeconds: msm].
LastTickSemaphore critical: [ LastTick := LastTick + 1. ^ self todayAtNanoSeconds: LastTick]
Wrapping only single assignment to variable with critical section while leaving another without it is same as if not using critical section at all.
-- Best regards, Igor Stasenko.