%\pagebreak
\section{Atomic Hint}
\label{sec:atomic_hint}
\index{constructs!atomic@\kcode{atomic}}
\index{atomic construct@\kcode{atomic} construct}
\index{atomic construct@\kcode{atomic} construct!hint clause@\kcode{hint} clause}
\index{clauses!hint@\kcode{hint}}
\index{hint clause@\kcode{hint} clause}

The atomic \kcode{hint} clause can be used to specify the
expected access to an atomic operation; thereby providing a hint
to be used for optimizing the synchronization of the atomic operation.

In the example below the \kcode{omp_sync_hint_uncontended} constant
in the \kcode{hint} clause specifies that few threads are expected
to attempt to perform the atomic operation at the same time.
This is justified in this case if \ucode{calc_vals} takes considerably
more time than the atomic operations, and the subsequent time of
arrival to execute the \kcode{atomic} region is varied about a mean time
and by times (much) greater than the execution time of the atomic
operation.

In the case where the execution time for \ucode{calc_vals} is short
compared to the atomic operation time, the \kcode{omp_sync_hint_contended}
hint parameter might be used. 

\cexample[5.0]{atomic}{4}

\ffreeexample[5.0]{atomic}{4}


