| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
handling, a bit faster, etc.)
|
| |
|
|
|
|
| |
wait before end-time, on small timeout values (like 0.5, etc.)
|
|
|
|
| |
timeJump/timeJumpEpoch
|
|
|
|
| |
timeJump/timeJumpEpoch
|
|
|
|
| |
calibration thread anymore)
|
|
|
|
|
|
| |
soft drifts within 250ms intervals, fewer discrepancy and fewer virtual time gradation, etc).
todo: implement resetting timer-resolution to original value (without calibration thread now).
|
| |
|
|
|
|
| |
variance + frequency factor)
|
|
|
|
| |
factor)
|
| |
|
|
|
|
| |
else?)...
|
|
|
|
| |
calibration? something else?)...
|
|
|
|
| |
very brief sleep-time.
|
|
|
|
| |
large sleeps)
|
|
|
|
| |
wait-time, that may expire immediately (for example `vwait 0.0001 test`).
|
|
|
|
| |
wait-times and other RTS-near constructs.
|
|
|
|
|
|
|
|
| |
*nix more "RTS" resp. NRT-capable):
- more precise waiting now (e.g. still microseconds by time up to 0.005 ms), important since after/vwait accepting microseconds (double);
- avoids too long waiting on *nix wait/sleep primitives, e. g. by `timerate {vwait 0 a}` - 1.5µs now vs. 31.9µs before;
- extended with new internal function TclpSleep (in contrast to Tcl_Sleep accept Tcl_Time, so microseconds);
|
|
|
|
|
|
| |
tcl-handling
(cherry-picked and back-ported from tclSE-9)
|
|
|
|
| |
background and it is an idle-event, give enough time to process it (resp. wait until last idle event is done);
|
|
|
|
|
|
| |
tolerance (deviation by waiting);
several time-independent test-cases optimized (wait shorter now) + some new cases to cover more situations.
|
|
|
|
| |
retrieving via internal representation (ignore foreign events), test cases extended.
|
| |
|
|
|
|
|
|
|
| |
avoid busy-wait if the rest of wait-time too small and can be neglected);
TMR_RES_TOLERANCE can be defined to use wait-tolerance on *nix platforms (currently windows only as relation resp. deviation between default timer resolution 15.600 in exact milliseconds, means 15600/15000 + small overhead);
Decreasing of TMR_RES_TOLERANCE (up to 0) makes tcl more "RTS" resp. NRT-capable (very precise wait-intervals, but more CPU-hungry).
|
|
|
|
|
| |
Otherwise depending on the VC-version, context, include-order it can cause:
error C2054: expected '(' to follow 'inline'
|
| |
|
|
|
|
| |
nonsignaled after wake-up), avoids unwanted reset if wake-up for some other reasons (timeout/aio/message).
|
| |
|
|
|
|
| |
non-blocking wait for event - if block-time set outside an event source traversal, use it as timeout, so can return with result 0 (no events);
|
|
|
|
|
|
|
|
|
|
| |
"vwait ?options? ?timeout? varname".
some small improvements and fixing:
- Tcl_DoOneEvent can wait for block time that was set with Tcl_SetMaxBlockTime outside an event source traversal,
and stop waiting if Tcl_SetMaxBlockTime was called outside an event source (another event occurs and interrupt waiting loop), etc;
- safer more precise pre-lookup by options (use TclObjIsIndexOfTable instead of simply comparison of type with tclIndexType);
test cases extended to cover conditional "vwait" usage;
|
| |
|
|
|
|
|
|
|
| |
(introduced threshold to prevent sourcing resp. waiting for new events by no-wait).
[enhancement] new event type introduced: TCL_ASYNC_EVENTS, command "update" becomes options to process only specified types, resp. to bypass some event types (including -idle/-noidle that in opposite to "idletasks" does not included window events);
test cases extended.
|
|
|
|
|
|
| |
process pending events only (without wait), negative value equivalent execution of "vwait" without timeout (infinite);
test cases fixed and extended;
|
|
|
|
|
|
| |
using timer marker in the queue and direct call of TclServiceTimerEvents if marker reached (instead of continuous adding handler event, polling it in the queue and removing hereafter);
this provides double performance increase in the service cycle;
|
|
|
|
|
|
|
|
| |
faster now);
[win] prevent listen using PeekMessage twice, and no wait anymore for too short timeouts (because windows can wait too long), compare 0µs with up-to 100µs overhead within MsgWaitForMultipleObjectsEx;
[bad behavior] process idle events only as long as no other events available (now TclPeekEventQueued will be used to check new events are available in service idle cycle);
[enhancement] new option "noidletasks" for command "update", so "update noidle" means "process all events but not idle";
|
|
|
|
|
|
| |
that should be executed immediately (no time);
normalizes timer, prompt and idle events structures using common TimerEntry structure for all types;
|
| |
|
|
|
|
|
|
|
| |
because changes the blocking time, also if TCL_TIMER_EVENTS|TCL_IDLE_EVENTS not set), so let do that within Tcl_DoOneEvent cycle only (we have registered an event source).
[performance] optimization for "after 0" as immediately execution without time (invoke as soon as possible) - generation and invocation of such timers twice faster now.
[performance] leave handler-event in the queue as long as pending timers still available (with expired time or immediate timers) by generation lock, resp. changed/not invalidated timer-queue) - so fewer event/allocations and guarantee to be executed within the next event cycle;
|
|
|
|
|
|
| |
pointer to timer/idle event, used for fast access to the "after" event (cancel, info etc.);
test cases extended to cover it additionally
|
|
|
|
| |
delete callback)
|
|
|
|
| |
lists, prevents allocating memory twice for the "after" events (use memory inside timer/idle event for the "after" structure), etc.
|
|
|
|
| |
linked list, because requires handling from both ends of the list)
|
|
|
|
|
|
|
|
|
|
| |
NRT-capable):
- the clock ticks never backwards (avoid it by negative drifts using comparison of times before and after calibration);
- more precise, smooth/soft drifting (avoids too large drifts, already after 10 iterations the drift gets fewer as 0.1 microseconds);
- because of more accurate drifting (aspire to the smallest difference), we can prolong calibration interval (up to 10 seconds by small tdiff-value);
Closes ticket [b7b707a310ea42e9f1b29954ee8ca13ae91ccabe] "[win32] NRT-only - NativeGetTime backwards time-drifts bug"
|
|\ |
|
| | |
|
| |
| |
| |
| | |
back-ported as inline from trunk)
|
| |\ |
|
| | |
| | |
| | |
| | | |
first iteration(s) can be too fast (cached, delayed clean up, etc).
|
| | |\ |
|
| | | |\ |
|