[squeak-dev] Timing riddle

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue Dec 4 19:14:05 UTC 2012


Look at implementation of #valueWithin:onTimeout:

It relies on signalling a TimeOut to activeProcess...
So it is not re-entrant :
- the first TimeOut is signalled by inner watchdog after 2 seconds.
- it is caught by inner valueWithin:onTimeout: wich starts the second
inner iteration
- the second TimeOut is signalled by inner watchdog after 3 seconds (1
second later)
- it is caught by inner valueWithin:onTimeout: wich starts the third
inner iteration
- the third TimeOut is signalled by inner watchdog 2 seconds later
(after 5 seconds)

Maybe #valueWithin:onTimeout: could be rewritten susing
Semaphore>>waitTimeoutMSecs:

Nicolas



2012/12/4 Stéphane Rollandin <lecteur at zogotounga.net>:
> [
>         [5 seconds asDelay wait]
>                 valueWithin: 2 seconds onTimeout: []
> ]
> durationToRun
>
> --> 0:00:00:02.001
> so far so good
>
>
> [
>         3 timesRepeat: [
>                 [5 seconds asDelay wait]
>                         valueWithin: 2 seconds onTimeout: []]
> ]
> durationToRun
>
> --> 0:00:00:06.001
> seems ok
>
>
> [
>         [
>                 [5 seconds asDelay wait]
>                         valueWithin: 2 seconds onTimeout: []
>         ]
>         valueWithin: 3 seconds onTimeout: []
> ]
> durationToRun
>
> --> 0:00:00:02.001
> alright
>
>
> BUT:
>
>
> [
>         [
>                 3 timesRepeat: [
>                         [5 seconds asDelay wait]
>                                 valueWithin: 2 seconds onTimeout: []]
>         ]
>         valueWithin: 3 seconds onTimeout: []
> ]
> durationToRun
>
> --> 0:00:00:05
>
> ?
>
>
> Stef
>


More information about the Squeak-dev mailing list