日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




セマフォのロックを解除します。

形式

#include <semaphore.h>

int sem_post (sem_t *sem);


引数



sem

ロックを解除するセマフォ。

説明

sem_post関数は,セマフォに対してセマフォ・ロック解除操作を実行して,指定されたセマフォのロックを解除します。ロック関数あるいはロック解除関数 sem_waitsem_trywait,および sem_postを呼び出す前に,セマフォに対して適切な関数 (名前付きセマフォの場合は sem_open,名前なしセマフォの場合は sem_init) が呼び出されていなければなりません。

sem_post関数の後,セマフォ値が正数の場合,セマフォのロック解除を待つためのプロセスのブロックは行われず,セマフォ値が増加します。 sem_post関数の後,セマフォ値がゼロになる場合,セマフォを待ってブロックされているプロセスのうちの 1 つが,正常に sem_wait呼び出しから処理を戻すことができます。

セマフォを待ってブロックされているプロセスが複数ある場合,それらのうち 1 つのプロセスだけがロックを解除され, sem_post関数の処理が戻った際セマフォの状態は変更無くそのまま維持されます。ブロックが解除されるプロセスは,ブロックされているすべてのプロセスのスケジューリング・ポリシーと優先度に従って選択されます。スケジューリング・ポリシーが SCHED_FIFO あるいは SCHED_RR, の場合,もっとも優先度が高い待ちプロセスのブロックが解除されます。最も優先度の高いプロセスが複数存在する場合は,そのうち最も長い期間待っているプロセスのブロックが解除されます。

sem_post関数は,シグナル捕捉関数から呼び出すことができます。


戻り値

0 正常終了。 sem_post 関数は,プロセスのブロックを解除するセマフォ・ロック解除操作を実行します。
- 1 エラーの発生を示します。 errno に次のいずれかの値を設定します。

  • EINVAL -- sem 引数は有効なセマフォではありません。

  • EVMSERR -- 変換不可能な OpenVMS エラー


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.