{{fbdoc item="title" value="Threading Support Functions"}}----
Procedures for working with multithreaded applications.

{{fbdoc item="desc"}}
	These procedures allow for multithreaded programming. Threads and conditional variables can be created and destroyed, and so-called //mutexes// can be obtained to protect thread-sensitive data.

**{{anchor name="THREADS|Threads"}}**
	Procedures that start and wait for threaded procedures.
**{{anchor name="CONDVARS|Conditional Varables"}}**
	Procedures that create and signal conditional variables.
**{{anchor name="MUTEXES|Mutexes"}}**
	Procedures that deal with mutexes.

<<{{anchor name="THREADS"}}{{fbdoc item="section" value="Threads"}}
	=={{fbdoc item="keyword" value="KeyPgThreadCall|THREADCALL"}}==
		Starts a procedure with parameters in a separate thread of execution.
	=={{fbdoc item="keyword" value="KeyPgThreadCreate|THREADCREATE"}}==
		Starts a procedure in a separate thread of execution.
	=={{fbdoc item="keyword" value="KeyPgThreadDetach|THREADDETACH"}}==
		Releases a thread handle without waiting for the thread to finish.
	=={{fbdoc item="keyword" value="KeyPgThreadWait|THREADWAIT"}}==
		Waits for a thread to finish and releases the thread handle.

{{anchor name="CONDVARS"}}{{fbdoc item="section" value="Conditional Variables"}}
	=={{fbdoc item="keyword" value="KeyPgCondCreate|CONDCREATE"}}==
		Creates a conditional variable.
	=={{fbdoc item="keyword" value="KeyPgCondWait|CONDWAIT"}}==
		Pauses execution of a threaded procedure.
	=={{fbdoc item="keyword" value="KeyPgCondSignal|CONDSIGNAL"}}==
		Resumes execution of a threaded procedure waiting for a conditional.
	=={{fbdoc item="keyword" value="KeyPgCondBroadcast|CONDBROADCAST"}}==
		Resumes all threaded procedures waiting for a conditional.
	=={{fbdoc item="keyword" value="KeyPgCondDestroy|CONDDESTROY"}}==
		Destroys a conditional variable that is no longer needed.

<<>>{{anchor name="MUTEXES"}}{{fbdoc item="section" value="Mutexes"}}
	=={{fbdoc item="keyword" value="KeyPgMutexCreate|MUTEXCREATE"}}==
		Creates a mutex.
	=={{fbdoc item="keyword" value="KeyPgMutexLock|MUTEXLOCK"}}==
		Acquires a lock on a mutex.
	=={{fbdoc item="keyword" value="KeyPgMutexUnlock|MUTEXUNLOCK"}}==
		Releases a lock on a mutex.
	=={{fbdoc item="keyword" value="KeyPgMutexDestroy|MUTEXDESTROY"}}==
		Destroys a mutex that is no longer needed.
>>::c::
{{fbdoc item="target"}}
	- These procedures are not supported in DOS.

{{fbdoc item="back" value="DocToc|Table of Contents"}}