| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| | |
and max blocking time was not set outside an event source traversal.
|
| |\
| |/
|/| |
|
| |
| |
| |
| | |
waitForFiles (regardless of the too short timeout), e. g. test case "chan-io-53.8", etc.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
avoid reset block time by nested event-cycles (if Tcl_SetTimer does not create it), etc.
Fixed retarded events (using new retarded list, the involve of the retarded events occurs only after checking of all event sources now).
Two opportunities to retard event:
- lazy, using the same event-object: in the handler set event->proc to new (or the same) handler (fast, possible only if not entering new event-cycle in handler);
- create the event with new position "TCL_QUEUE_RETARDED";
New inline functions TclpQueueEventClientData / TclpQueueEventEx to fast creating resp. queuing event with extra data.
|
|\ \
| |/ |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
real-time"): because we use monotonic time in all wait functions, so to avoid too long wait by the absolute timers (to be able to trigger it) if time jumped to the expected absolute time, just let block for maximal 1 second if absolute timers available.
test-cases: time-jumps (TIP #302) test covered now.
Note: on some platforms it is only possible if the user has corresponding privileges to change system date and time.
Ex.: sudo LD_LIBRARY_PATH=. ./tclsh ../tests/timer.test -match timer-20.*
|
| | |
|
| |
| |
| |
| |
| |
| | |
wide-clicks supported);
because of variable width of 1 wide-click: windows - frequency dependent, unix - nanoseconds, darwin/osx - tb.numer / tb.denom nanoseconds.
|
| |
| |
| |
| |
| |
| | |
nanosecond)), so more precise now (e. g. by time measurement etc.);
unix/configure: regenerated (autoconf)
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
windows and unix now, TIP #302 fully implemented now);
Usage of monotonic time instead of adjustment via timeJump/timeJumpEpoch is more precise and effective.
New sub-command "clock monotonic" to provide monotonic time facility for tcl-level.
|
| |
| |
| |
| | |
(too slow by large queue) - rewritten to cancel delayed (by execute it).
|
| |
| |
| |
| |
| |
| | |
event (of the same generation), it was marked (be sure it marked to immediate execution in corresponding checkProc only).
tclIO: scheduled event rewritten using Tcl_Event instead of timer event (IO is not timer, e. g. executed also by usage of `vwait -notimer ...`, etc).
|
| |
| |
| |
| | |
socket-2.12 (busy prompt timer, unexpected too early timer event, wrong timer-marker usage)
|
| |
| |
| |
| |
| |
| |
| | |
* Amend to timer-marker: dualize special state of timer-marker (to differentiate between timer generations), so:
INT2PTR(-1) - exec immediate (marker reached);
INT2PTR(-2) - check in the next-cycle (marker reached only if no other events available);
Avoids permanent busy execution of prompt-events (always busy in timer), if they regenerate itself continuously for waiting for other events (like writable/readable), see e. g. socket-2.12.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
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);
|