Internet Direct (Indy)
|
Initializes a new thread for a client connection task in the scheduler.
function NewThread: TIdThreadWithTask; override;
TIdThreadWithTask - Thread created for the scheduler, or Nil when a thread cannot be created.
NewThread is an overridden TIdThreadWithTask function used to create and initialize the executable task for a yarn managed by the thread-based scheduler.
The return value for the method is a TIdThreadWithTask instance that represents the thread created for the client connection executable task in the scheduler, or Nil when a thread cannot be created.
NewThread calls the inherited NewThread method to initialize the thread for the scheduler.
NewThread uses the value in MaxThreads to determine is a limit is imposed on the number threads allowed in the thread-based scheduler. When MaxThreads contains a positive non-zero value, the number of active yarns in ActiveYarns is checked to ensure that new thread would not exceed the limit. If the number of TIdYarn instances in ActiveYarns would exceed the value in MaxThreads, an EIdSchedulerMaxThreadsExceeded is raised.
NewThread uses the value in ThreadPriority to determine if the thread priority for the new thread should be adjusted. When ThreadPriority contains a value other than tpNormal, SetThreadPriority is called to adjust the preference given to the thread during pre-emptive scheduling by the operating system.
NewThread also sets the value in FreeOnTerminate to True.
NewThread is used in the AcquireYarn method when an executable thread is needed for one of the ActiveYarns managed by the scheduler.
Use StartYarn to begin execution of the thread for a client connections' executable task.
Use TerminateYarn to halt execution of the thread for a client connections' executable task.
Exceptions |
Description |
Raised with the message RSchedMaxThreadEx when the number of threads would exceed the value in MaxThreads. |
Internet Direct (Indy) version 10.1.5
Copyright © 1993-2006, Chad Z. Hower (aka Kudzu) and the Indy Pit Crew. All rights reserved. Website http://www.indyproject.org. Post feedback to the Indy Documentation newsgroup. |