t is presumed that the reader is familiar with the boost::thread library and
basic concepts of multi-threaded programming such as deadlock, starvation and
The boost library is the principal implementation tool of this project.
However, we avoid hard coding of such implementation choice by introducing a
template-based layer that encapsulates most external primitives. We introduce
several additional primitives designed to prevent starvation and race
condition. The traditional primitives for exception-safe locking are also
The exception safety is identical to the exception safety of boost::thread.
Everything that locks may throw ots::config::ThreadResourceError. Some join
and sleep-like functions throw ots::config::ThreadInterrupted.