you might compare using the repeat function of timers to doing the loop.
Code:
menu status,menubar {
  Test It 
  .Do &Repeat:timermsg -m 2 3000 echo -a Test Repeat $!asctime(ss)
  .Do Test &Loop: {
    set %x 1
    while ( %x <= 2) {
      TIMERmsg $+ %x -m 1 $calc(3000 + %x * 16) echo -a Test Loop %x $asctime(ss)
      inc %x
    }
  }
}


Results:
echos the seconds, 3 seconds apart
* Timer msg activated
Test Repeat 57
Test Repeat 00
* Timer msg halted

they all finish "at the same time" well 16 miliseconds apart smile
* Timer msg1 activated
* Timer msg2 activated
Test Loop 1 11
* Timer msg1 halted
Test Loop 2 11
* Timer msg2 halted