I'll soon be in need of a high quality DateAndTime implementation. 2013/4/15 stephane ducasse <stephane.ducasse@free.fr>
Please rewrite it :)
Stef
On Apr 14, 2013, at 9:52 PM, Igor Stasenko <siguctua@gmail.com> wrote:
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.