<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
   <TITLE>Linux Threads Home Page: Dictionary</TITLE>
   <META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (X11; I; Linux 2.0.18 i586) [Netscape]">
</HEAD>
<BODY BACKGROUND="GraySea.gif">

<TABLE ALIGN=ABSCENTER BORDER=1 CELLSPACING=0 CELLPADDING=0 >
<CAPTION>
<P><FONT SIZE=+3>Dictionary of Thread Terms</FONT></P>
</CAPTION>

<TR> <TD><A NAME="DEF_Base_Address_Control"></A>Base Address Control</TD> <TD>An eccentricity of Solaris which allows identification of where the thread will reside in physical memory.</TD> </TR>
<TR> <TD><A NAME="DEF_Call_Once_Functions"></A>Call-Once Functions</TD> <TD>An ability to limit execution of a particular function/routine only once. Subsequent calls will return without execution and error.</TD> </TR>
<TR> <TD><A NAME="DEF_Cancellation"></A>Cancellation</TD> <TD>Killing threads from within program.</TD> </TR>
<TR> <TD><A NAME="DEF_Condition_Variables"></A>Condition Variables</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Detached_Threads"></A>Detached Threads</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Fork_All_Threads"></A>Fork All Threads</TD> <TD>A flag which forces all thread-creation calls to be forks with shared memory. Since Linux defines a fork() as a specific kind of clone() (thread), this is somewhat inherent. Other implementations have to redefine or encapsulate thread-creation calls in order to accomplish this.</TD> </TR>
<TR> <TD><A NAME="DEF_Fork_Calling_Thread_Only"></A>Fork Calling Thread Only</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Forked_Process"></A>Forked Process</TD> <TD>A stand-alone task that shares nothing intrinsicly with other tasks.  The only communication is has is through pipes, files and explicitly shared memory.</TD> </TR>
<TR> <TD><A NAME="DEF_Joinable_Threads"></A>Joinable Threads</TD> <TD>The ability to merge threads into a single execution context(?).</TD> </TR>
<TR> <TD><A NAME="DEF_Kernel_space_Threads"></A><A HREF="Types.html#KernelSpace">Kernel-space Threads</A></TD> <TD>Threads that are handled/scheduled by the kernel.</TD> </TR>
<TR> <TD><A NAME="DEF_Mutex"></A>Mutex</TD> <TD>Stands for <B>Mut</B>ual <B>Ex</B>clusion. A mutex can lock specific sections of memory using access flags.</TD> </TR>
<TR> <TD><A NAME="DEF_Mutex_Attributes"></A>Mutex Attributes</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Per_thread_Data_Handling_Function"></A>Per-thread Data Handling Function</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Per_thread_Signal_Handling"></A>Per-thread Signal Handling</TD> <TD>Ability to specify sharing signals. In other words, several threads can share a signal: if the signal is raised only one thread has to respond.  This is different from unshared signals: each thread has its own signal table.</TD> </TR>
<TR> <TD><A NAME="DEF_Priority_Inversion_Handling"></A>Priority Inversion Handling</TD> <TD>As threads get I/O blocked, provide a temporary reprioritization of threads.</TD> </TR>
<TR> <TD><A NAME="DEF_Priority_Scheduling"></A>Priority Scheduling</TD> <TD>Programmatically identifying the order, priority, or next threads to execute.</TD> </TR>
<TR> <TD>Process</TD> <TD>Essentially the same as a Task, having it's own private data and event regions.  However, often "process" defines the whole running program which may have several threads and/or tasks.  Also, "process" describes a supervising program.</TD> </TR>
<TR> <TD><A NAME="DEF_Processor_specific_Thread_Allocation"></A>Processor-specific Thread Allocation</TD> <TD>The ability to designate a specific thread to a specific processor.  This is useful for processors that handle special things like interrupts or excelerators.</TD> </TR>
<TR> <TD><A NAME="DEF_Readers_Writer_Locking"></A>Readers/Writer Locking</TD> <TD>In Solaris, threads can have one writer and several readers at the same time.</TD> </TR>
<TR> <TD><A NAME="DEF_Semaphores"></A>Semaphores</TD> <TD>A pair of functions that lock datasets, p() and v() (lock and unlock, respectively)</TD> </TR>
<TR> <TD><A NAME="DEF_Shared_Private_Mutexes"></A>Shared/Private Mutexes</TD> <TD>Having separate spaces for mutexes</TD> </TR>
<TR> <TD><A NAME="DEF_Specifying_Concurrency"></A>Specifying Concurrency</TD> <TD>The ability to identify which threads will be multiprocessed.</TD> </TR>
<TR> <TD><A NAME="DEF_Stack_Size_Control"></A>Stack Size Control</TD> <TD>The ability to limit, resize or check the thread's stack usage.</TD> </TR>
<TR> <TD><A NAME="DEF_Synchronization"></A>Synchronization</TD> <TD></TD> </TR>
<TR> <TD>Task</TD> <TD>Like the Process, a Task has its own data and event regions, but a task often includes interaction with other parent, child or sister tasks.  The task may have specific assignments to perform; whereas, the process may supervise.</TD> </TR>
<TR> <TD><A NAME="DEF_Thread"></A>Thread</TD> <TD>The smallest context of execution (COE). Often it is created to share data directly with the parent.</TD> </TR>
<TR> <TD>Thread</TD> <TD>As how Linux Torvalds defines it: a "context of execution".  It basically is the minimum basic executable unit that contains shared code, data and stack.  Thus it is simply a processor's context.</TD> </TR>
<TR> <TD><A NAME="DEF_Thread_Attributes"></A>Thread Attributes</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Thread_ID_Comparison"></A>Thread ID Comparison</TD> <TD></TD> </TR>
<TR> <TD><A NAME="DEF_Thread_Suspension"></A>Thread Suspension</TD> <TD>Temporarily halting execution of a thread. In Linux kernel-space threads, this can be accomplished using SIGSTOP and SIGCONT.</TD> </TR>
<TR> <TD><A NAME="DEF_User_space_Threads"></A><A HREF="Types.html#UserSpace">User-space Threads</A></TD> <TD>Threads that are handled/scheduled within a single task by special libraries.</TD> </TR>

<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
<TR> <TD></TD> <TD></TD> </TR>
</TABLE>


<P><HR SIZE=4 WIDTH="100%"></P>
<CENTER><TABLE CELLSPACING=0 CELLPADDING=0 >
<TR>
<TD><A HREF="index.html"><CENTER><IMG SRC="ArrowLeft.gif" ALT="[Left Arrow]" BORDER=0 HEIGHT=40 WIDTH=40></CENTER></A></TD>
<TD><A HREF="index.html"><CENTER><IMG SRC="House.gif" ALT="[Home]" BORDER=0 HEIGHT=40 WIDTH=40></CENTER></A></TD>
<TD><A HREF="Dictionary.html"><CENTER><IMG SRC="BookSearch.gif" ALT="[Book Search]" BORDER=0 HEIGHT=40 WIDTH=40></CENTER></A></TD>
<TD><A HREF="mailto:walton@oclc.org"><CENTER><IMG SRC="MailBox.gif" ALT="[Mailbox]" BORDER=0 HEIGHT=40 WIDTH=40></CENTER></A></TD>
<TD><A HREF="index.html"><CENTER><IMG SRC="ArrowRight.gif" ALT="[Right Arrow]" BORDER=0 HEIGHT=40 WIDTH=40></CENTER></A></TD>
</TR>
<TR>
<TD><A HREF="index.html">[Previous Page]</A></TD>
<TD><A HREF="index.html">[First Page]</A></TD>
<TD><A HREF="Dictionary.html">[Dictionary]</A></TD>
<TD><A HREF="mailto:walton@oclc.org">[Email Author]</A></TD>
<TD><A HREF="index.html">[Next Page]</A></TD>
</TR>
</TABLE></CENTER>

</BODY>
</HTML>
