1.5 Tasks vs. Threads
In OmniThreadLibrary you don’t create threads but tasks. A task can be executed in a new thread or in an existing thread, taken from the thread pool.
A task is created using
CreateTask
function, which takes as a parameter a global procedure, a method, an instance of a TOmniWorker
class (or, usually, a descendant of that class) or an anonymous method (in Delphi 2009 and newer). CreateTask
returns an IOmniTaskControl
interface, which can be used to control the task. A task is always created in suspended state and you have to call Run
to activate it (or Schedule
to run it in a thread pool).
The task has access to the
IOmniTask
interface and can use it to communicate with the owner (the part of the program that started the task). Both interfaces are explained in full detail in chapter Low-level multithreading.
The distinction between the task and the thread can be summarized in few simple words.
Task is part of code that has to be executed.Thread is the execution environment.
You take care of the task, OmniThreadLibrary takes care of the thread.
0 comments:
Post a Comment