20 ms would be a time slice (timer tick). But threads not have to switch at
only timer ticks. A higher priority thread gets CPU as soon as it becomes
ready to run (assuming that it's the only ready thread with this priority).
Ah, thanks.
I'm not sure how the OS times switching threads, but it seems much faster
than 20ms. I regularly use multiple threads that wake on 20ms intervals
and it's pretty consistent, even on single CPU machines.
I suppose it's consistent because most threads in the system are waiting
most of the time.
Mark
--
Mark Salsbery
Microsoft MVP - Visual C++
"Scott McPhillips [MVP]" <org-dot-mvps-at-scottmcp> wrote in message
news:eLHaXKOEIHA.1316@TK2MSFTNGP02.phx.gbl...
"Mark Salsbery [MVP]" <MarkSalsbery[MVP]@newsgroup.nospam> wrote in
message news:eMnp%23sNEIHA.5752@TK2MSFTNGP02.phx.gbl...
but the thread switching period is probably 20 milliseconds.
Hi Scott,
I'm curious, where did you get that number from? That seems like a
really long time and it makes me wonder how my multimedia software works
at all :) Is it really that long?
Cheers,
Mark
The system timer interrupt interval is available from
GetSystemTimeAdjustment(). If my memory is right it was 20 msec for
NT/2K/XP. On my Vista machine it returns 15 msec.
Timer-based thread switching can't go faster than the system timer. But
who knows, with multimedia I/O they may have souped it up to do a thread
switch upon a multimedia interrupt. Sound cards don't need much help
though, because they contain hardware buffering that greatly reduces the
interrupt rate.
--
Scott McPhillips [VC++ MVP]