<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
   <TITLE>Linux Threads Home Page: How do Linux Threads compare with other OSs'?</TITLE>
   <META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (WinNT; U) [Netscape]">
</HEAD>
<BODY background="GraySea.gif">

<P><FONT SIZE=+3>How do Linux Threads compare with other OSs'?</FONT></P>

<CENTER><TABLE BORDER=1 CELLSPACING=0 CELLPADDING=2 >
<TR>
<TD><B><FONT SIZE=+1>Feature</FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1>Posix</FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1>Solaris</FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1>Win32</FONT></B></TD>

<TD ALIGN=CENTER COLSPAN="13"><B><FONT SIZE=+1>Linux</FONT></B></TD>
</TR>

<TR>
<TD></TD>

<TD></TD>

<TD></TD>

<TD></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1>Kernel</FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#Bare_Bones">BB</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#CLthreads">CL</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#DCEthreads">DCE</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#FSU_Pthreads">FSU</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#JKthread">JK</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#LinuxThreads">Lt</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#LWP">LWP</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#NThreads">Nt</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#PCthreads">PCt</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#Pthreads">Pt</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#QuickThreads">Qt</A></FONT></B></TD>

<TD ALIGN=CENTER><B><FONT SIZE=+1><A HREF="ThreadLibs.html#RexThreads">Rex</A></FONT></B></TD>
</TR>

<TR>
<TD><A HREF="Types.html">User-/Kernel-space</A></TD>

<TD ALIGN=CENTER>n/a</TD>

<TD ALIGN=CENTER>K&amp;U</TD>

<TD ALIGN=CENTER>K</TD>

<TD ALIGN=CENTER>K</TD>

<TD ALIGN=CENTER>K</TD>

<TD ALIGN=CENTER>K</TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>U</TD>

<TD ALIGN=CENTER>K</TD>

<TD ALIGN=CENTER>K</TD>

<TD ALIGN=CENTER>U</TD>

<TD ALIGN=CENTER>U</TD>

<TD ALIGN=CENTER>U</TD>

<TD ALIGN=CENTER>U</TD>

<TD ALIGN=CENTER>U</TD>

<TD ALIGN=CENTER>U</TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Cancellation">Cancellation</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Priority_Scheduling">Priority Scheduling</A>
<A HREF="#NOTE_Linux_Scheduling">[1]</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Priority_Inversion_Handling">Priority Inversion
Handling</A> <A HREF="#NOTE_Priority_Inversion">[2]</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Mutex_Attributes">Mutex Attributes</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Shared_Private_Mutexes">Shared and Private
Mutexes</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Thread_Attributes">Thread Attributes</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Synchronization">Synchronization</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Stack_Size_Control">Stack Size Control</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="file:///D|/DATA/Personal/webpages/Linux-Threads/CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Base_Address_Control">Base Address Control</A>
<A HREF="#NOTE_Solaris">[3]</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>n/a</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Detached_Threads">Detached Threads</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="file:///D|/DATA/Personal/webpages/Linux-Threads/CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Joinable_Threads">Joinable Threads</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Per_thread_Data_Handling_Function">Per-Thread
Data Handling Functions</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#Per_thread_Signal_Handling">Per-Thread Signal
Handling</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="file:///D|/DATA/Personal/webpages/Linux-Threads/CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11><A HREF="#NOTE_Signal_Handlers">[4]</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11><A HREF="#NOTE_SIGIO">[8]</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11><A HREF="#NOTE_Signal_Handlers">[4]</A></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Condition_Variables">Condition Variables</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Semaphores">Semaphores</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Thread_ID_Comparison">Thread ID Comparison</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11><A HREF="#NOTE_nthread_self">[9]</A></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Call_Once_Functions">Call-Once Functions</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Thread_Suspension">Thread Suspension</A>
<A HREF="#NOTE_No_Suspend_Resume">[5]</A></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Specifying_Concurrency">Specifying Concurrency</A></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11><A HREF="#NOTE_Multiprocessors">[6]</A></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11><A HREF="#NOTE_Num_threads">[10]</A></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Readers_Writer_Locking">Readers/Writer
Share Locking</A> <A HREF="#NOTE_Solaris">[3]</A></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Processor_specific_Thread_Allocation">Processor-specific
Thread Allocation</A></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Fork_All_Threads">Fork All Threads</A>
<A HREF="#NOTE_Win32_fork">[7]</A></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>

<TR>
<TD><A HREF="Dictionary.html#DEF_Fork_Calling_Thread_Only">Fork Calling
Thread Only</A> <A HREF="#NOTE_Win32_fork">[7]</A></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>?</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER><IMG SRC="CheckMark.gif" ALT="X" HEIGHT=11 WIDTH=11></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER></TD>

<TD ALIGN=CENTER>-</TD>

<TD ALIGN=CENTER></TD>
</TR>
</TABLE></CENTER>

<P>NOTES:</P>

<OL>
<LI><A NAME="NOTE_Linux_Scheduling"></A>Linux kernel-space threads are
processes and are not handled differently from fork'ed tasks (unlike most
other multithreaded OS's). Therefore, process scheduling, cancelling, suspending,
etc. is controlled via signals.</LI>

<LI><A NAME="NOTE_Priority_Inversion"></A>Posix and Solaris link thread
priorities with mutexes and use the priority of a blocked thread's mutex
to alter the priority of the blocking thread. Win32 and Linux let the scheduler
determine what thread to elevate in priority.</LI>

<LI><A NAME="NOTE_Solaris"></A>Solaris strangeness. Not applicable to most
other OS's.</LI>

<LI><A NAME="NOTE_Signal_Handlers"></A>Signals are received on a per-thread
basis, but threads share signal handlers for a given signal.</LI>

<LI><A NAME="NOTE_No_Suspend_Resume"></A>Posix specifies no functionality
for suspending and resuming threads. Solaris implements it because they
need it: the program can change certain thread's attributes unless it is
suspended.</LI>

<LI><A NAME="NOTE_Multiprocessors"></A>Multiprocessor systems only.</LI>

<LI><A NAME="NOTE_Win32_fork"></A>Win32 has no direct equivalent to unix's
fork() system call, but you can fake it with the CreateProcess() and CreateRemoteProcess()
calls [and a little luck].</LI>

<LI><A NAME="NOTE_SIGIO"></A>SIGIO and SIGALARM are multiplexed.</LI>

<LI><A NAME="NOTE_nthread_self"></A>There is a function &quot;nthread_self()&quot;
to get the ID of the calling thread.</LI>

<LI><A NAME="NOTE_Num_threads"></A>You can specify how much user-level
threads you will use at once. The number of kernel-level threads (i.e.
concurrency level) is then determined as min([max number of threads to
use],[number of available processors]).</LI>
</OL>

<P>
<HR SIZE=4 WIDTH="100%"></P>

<CENTER><TABLE CELLSPACING=0 CELLPADDING=0 >
<TR>
<TD>
<CENTER><P><A HREF="ThreadLibs.html"><IMG SRC="ArrowLeft.gif" ALT="[Left Arrow]" BORDER=0 HEIGHT=40 WIDTH=40></A></P></CENTER>
</TD>

<TD>
<CENTER><P><A HREF="index.html"><IMG SRC="House.gif" ALT="[Home]" BORDER=0 HEIGHT=40 WIDTH=40></A></P></CENTER>
</TD>

<TD>
<CENTER><P><A HREF="Dictionary.html"><IMG SRC="BookSearch.gif" ALT="[Book Search]" BORDER=0 HEIGHT=40 WIDTH=40></A></P></CENTER>
</TD>

<TD>
<CENTER><P><A HREF="mailto:walton@oclc.org"><IMG SRC="MailBox.gif" ALT="[Mailbox]" BORDER=0 HEIGHT=40 WIDTH=40></A></P></CENTER>
</TD>

<TD>
<CENTER><P><A HREF="Languages.html"><IMG SRC="ArrowRight.gif" ALT="[Right Arrow]" BORDER=0 HEIGHT=40 WIDTH=40></A></P></CENTER>
</TD>
</TR>

<TR>
<TD><A HREF="ThreadLibs.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="Languages.html">[Next Page]</A></TD>
</TR>
</TABLE></CENTER>

</BODY>
</HTML>
