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.