セマフォ API ################################################################################ 概要 ================================================================================ `xmc::Semaphore` は、スレッド間またはコア間で共有リソースへのアクセスを同期するためのバイナリセマフォです。 コンストラクタ直後は利用可能状態 (トークン保持) で初期化されます。 Semaphore クラス ================================================================================ xmc::Semaphore::Semaphore -------------------------------------------------------------------------------- .. code-block:: cpp xmc::Semaphore::Semaphore(); セマフォを生成します。 内部リソース確保に失敗した場合、セマフォは未初期化状態になります。 xmc::Semaphore::~Semaphore -------------------------------------------------------------------------------- .. code-block:: cpp xmc::Semaphore::~Semaphore(); セマフォを破棄し、内部リソースを解放します。 xmc::Semaphore::isInitialized -------------------------------------------------------------------------------- .. code-block:: cpp bool xmc::Semaphore::isInitialized() const; セマフォが初期化済みかどうかを返します。 初期化成功時は `true`、失敗時は `false` です。 xmc::Semaphore::take -------------------------------------------------------------------------------- .. code-block:: cpp void xmc::Semaphore::take(); セマフォを取得します。 利用可能になるまでブロッキングします。 未初期化状態では何も行いません。 xmc::Semaphore::tryTake -------------------------------------------------------------------------------- .. code-block:: cpp bool xmc::Semaphore::tryTake(); 非ブロッキングでセマフォ取得を試みます。 取得に成功した場合は `true`、取得できなかった場合は `false` を返します。 未初期化状態でも `false` を返します。 xmc::Semaphore::give -------------------------------------------------------------------------------- .. code-block:: cpp void xmc::Semaphore::give(); セマフォを解放します。 `take()` または `tryTake()` で取得したセマフォを他の処理へ譲渡できる状態に戻します。 未初期化状態では何も行いません。