Suspending Thread Execution
A thread can suspend and resume the execution of another thread using the
SuspendThread and
ResumeThread functions. While a thread is suspended, it is not scheduled for time on the
processor.
The
SuspendThread function is not particularly useful for synchronization because it does not
control the point in the code at which the thread's execution is suspended.
However, you might want to suspend a thread in a situation where you are waiting
for user input that could cancel the work the thread is performing. If the user
input cancels the work, have the thread exit; otherwise, call
ResumeThread.
If a thread is created in a suspended state (with the CREATE_SUSPENDED flag),
it does not begin to execute until another thread calls
ResumeThread with a handle to the suspended thread. This can be useful for initializing
the thread's state before it begins to execute. See
Using a Multithreaded Multiple Document Interface Application for an example that uses this method to modify the thread's priority before
it can run. Suspending a thread at creation can be useful for one-time
synchronization, because this ensures that the suspended thread will execute the
starting point of its code when you call
ResumeThread.
A thread can temporarily yield its execution for a specified interval by
calling the
Sleep or
SleepEx functions This is useful particularly in cases where the thread responds to
user interaction, because it can delay execution long enough to allow users to
observe the results of their actions. During the sleep interval, the thread is
not scheduled for time on the processor.
The
SwitchToThread function is similar to
Sleep and
SleepEx, except that you cannot specify the interval.
SwitchToThread allows the thread to give up its time slice.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database