.Sleep vs Dialog DoEvents

Category: Threads

Date: 02-16-2022

Return to Index


 
'The way that Windows appears to run more than one program at a time is that
'it rapidly switches between each program, giving the appearance that all programs
'are running in parallel.
 
'Each program gets a time-slice of 20-120 ms, depending on the version of Windows.
'The time-slice is call the Quantum.
 
'At any time, a program can yield the remainder of it's current time slice, or
'all time-slices for a specified time.  Yielding time-slices is done to improve the
'performance of an application by ensuring that other threads or processes have
'as may time-slices available to them as possible.
 
Sleep m&
'With Sleep, a program (thread, actually) pauses for a specified number of
'milliseconds (ms). During that time the thread's time-slices are given to other
'threads and processes.
 
Sleep 0
'The special case of Sleep 0 yields only the remainder of the current time-slice.
 
Application Performance
'To give occasional use of a time-slice in a loop, allowing threads or other processes
'to execute - but with minimal impact on the current thread , use code like this
'which yields time-slices only occasionally.
   For x = 1 to 10000
      If x Mod 10 = 0 Then Sleep 0    'yields 1 per 10 time-slices
   Next
 
Dialog Doevents
'Because a tight loop can slow an applications responsiveness, a means of ensuring
'a response to pending messages is needed. Dialog DoEvents does this. It pauses
'execution of the current thread (at the Dialog DoEvents line of code) and processes
'any pending messages, then continues execution of the thread at the Dialog DoEvents
'line of code.  In addition to pausing while pending messages are handled, the thread
'will pause for an additional m& milliseconds (or til the end of the current time-slice,
' if m& is zero).
 
'Syntax:
Dialog Doevents [sleep&] To Count&     'sleep& is # of ms to pause
 
'If sleep& is set to zero, the remainder of the current time slice is relinquished
'If sleep& is left out, a default value of 1 is used.
'If sleep& is > 0, the thread sleeps for that length of time, relinquishing all time-slices for the duration
 
'gbs_00393
'Date: 03-10-2012


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm