\pagebreak
\section{The \code{critical} Construct}
\label{sec:critical}

The following example includes several \code{critical} constructs. The example 
illustrates a queuing model in which a task is dequeued and worked on. To guard 
against multiple threads dequeuing the same task, the dequeuing operation must 
be in a \code{critical} region. Because the two queues in this example are independent, 
they are protected by \code{critical} constructs with different names, \plc{xaxis} 
and \plc{yaxis}.

\cexample{critical}{1}

\fexample{critical}{1}

The following example extends the previous example by adding the \code{hint} clause to the \code{critical} constructs.

\cexample{critical}{2}

\fexample[4.5]{critical}{2}
