IT用語辞典バイナリ |
セマフォ
セマフォとは、並行プログラミングにおいて同期をサポートするための機構である。
セマフォは、必ずしも排他アクセスとする必要がない資源を同時にアクセスできるプログラム数を制限するために使われる。
オランダの計算機科学者で構造化プログラミングの提唱者の1人であるエドガー・ダイクストラ(Edsger Wybe Dijkstra)によって考案され、資源毎に管理される整数である。
資源使用の宣言を行うためにP操作(オランダ語で小さくする意味の「Prolagen」)を行う。P操作ではセマフォが1以上であれば1を減算し、資源を使えるようにする。セマフォが0であれば待ち状態になる。資源が不要となればV操作(オランダ語で大きくする意味の「Verhogen」)により、資源の解放を宣言する。この時、セマフォは1加算される。なお、これらの処理はアトミック(すなわち不可分)に行う必要がある。
PHP関数リファレンス |
セマフォ・共有メモリおよび IPC 関数(semaphore)
導入
このモジュールは、System V IPC 関連の関数へのラッパーを提供します。 セマフォ・共有メモリおよびプロセス間通信(IPC)がその中に含まれます。セマフォは、マシーン上のリソースへの排他的アクセス機能や、 同時にあるリソースを使用することができるプロセスの数を制限するために 使用することができます。
このモジュールは、System V 共有メモリを使用した共有メモリ関数も 提供します。共有メモリは、グローバル変数へのアクセス手段を提供するために 使用することが可能です。別の httpd デーモンおよび (Perl, C, ... のような)他のプログラムさえ、グローバルデータ交換を 提供するこのデータにアクセスすることが可能です。 共有メモリは、同時アクセスに関して安全ではないということを覚えておいて ください。 同期をとるには、セマフォを使用してください。 表 263. Unix OS による共有メモリの制限
| SHMMAX | 共有メモリの最大サイズ。通常は 131072 バイト |
| SHMMIN | 共有メモリの最小サイズ。通常は 1 バイト |
| SHMMNI | 共有メモリセグメントの最大数。通常は 100 |
| SHMSEG | プロセス毎の共有メモリの最大数。通常は 6 |
メッセージング関数は、他のプロセスと相互にメッセージを送受信する ために使用することができます。 これにより簡単で効率的なプロセス間のデータ交換が可能であり、 Unix ドメインソケットを用いる場合のような設定は不要です。
注意: この拡張モジュールは Windows 環境では利用できません。
要件
外部ライブラリを必要としません。インストール手順
この関数はデフォルトでは有効になってはいません。System V セマフォの サポートを有効にするには、オプション --enable-sysvsem を指定して PHP を コンパイルする必要があります。System V 共有メモリのサポートを有効にするには、 オプション --enable-sysvshm を 指定して PHP をコンパイルする必要があります。System V メッセージを有効に するには、オプション --enable-sysvmsg を指定して PHP をコンパイル します。実行時設定
php.ini の設定により動作が変化します。表 264. セマフォ設定オプション
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| sysvmsg.value | "42" | PHP_INI_ALL | |
| sysvmsg.string | "foobar" | PHP_INI_ALL |
PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
リソース型
定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。表 265. System V メッセージ定数
| 定数 | 型 | 変更履歴 |
|---|---|---|
| MSG_IPC_NOWAIT | integer | |
| MSG_EAGAIN | integer | 5.2.0 以降 |
| MSG_ENOMSG | integer | 5.2.0 以降 |
| MSG_NOERROR | integer | |
| MSG_EXCEPT | integer |
目次
- ftok — パス名とプロジェクト ID を、System V IPC キーに変換する
- msg_get_queue — メッセージキューを作成またはそれにアタッチする
- msg_receive — メッセージキューからメッセージを受信する
- msg_remove_queue — メッセージキューを破棄する
- msg_send — メッセージキューにメッセージを送信する
- msg_set_queue — メッセージキューデータ構造体の情報を設定する
- msg_stat_queue — メッセージキューデータ構造体の情報を返す
- sem_acquire — セマフォを得る
- sem_get — セマフォ ID を得る
- sem_release — セマフォを解放する
- sem_remove — セマフォを削除する
- shm_attach — 共有メモリセグメントを作成またはオープンする
- shm_detach — 共有メモリセグメントへの接続を閉じる
- shm_get_var — 共有メモリから変数を返す
- shm_put_var — 共有メモリの変数を挿入または更新する
- shm_remove_var — 共有メモリから変数を削除する
- shm_remove — Unix システムから共有メモリを削除する
ウィキペディア |
セマフォ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2011/07/09 07:02 UTC 版)
セマフォ(英: semaphore)はコンピュータにおいて、古典的でかつ現在も利用される同期機構の一種。エドガー・ダイクストラが考案した。
一般には、並列処理の実行環境において、排他区間を確保し、資源に同時アクセスできる上限を規定したい時に用いる。
「semaphore」の語義は腕木通信で、それから派生した鉄道の腕木信号(や自動車の方向指示器)に由来する。 日本語でのセマフォは本用途(コンピュータ、プログラミング関連)に限られる。
- 1 セマフォとは
- 2 セマフォの概要
セマフォに関係した商品
- 【送料無料】Catalinbread Semaphore Tremolo ギターエフェクター カタリンブレッド セマフォ トレモロ【smtb-ms】【YDKG-ms】chuya-online
- 【送料無料】Linuxシステムプログラミング楽天ブックス
- 【送料無料】 LINUXシステムプログラミング / 垰井正雄 【単行本】HMV ローソンホットステーション R