| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (A~M) > fflockfile(3S)HP-UX 11i Version 2: September 2004 |
|
名称flockfile(), ftrylockfile(), funlockfile() ― マルチスレッドアプリケーション内でのストリームの明示的ロック 構文#include <stdio.h> void flockfile(FILE *stream); int ftrylockfile(FILE *stream); void funlockfile(FILE *stream); 説明flockfile(), ftrylockfile(), および funlockfile() では、アプリケーションレベルでストリームを明示的にロックできます。スレッドでこれらの関数を使用することによって、1 つの単位として実行される一連の入出力文を指示できます。 スレッドで flockfile() 関数を使用すると、 (FILE *) オブジェクトの所有権が取得できます。 スレッドで ftrylockfile() を使用すると、 (FILE *) オブジェクトが入手可能な場合は、そのオブジェクトの所有権が取得できます。 ftrylockfile() は、 flockfile() の非ブロッキング版です。 スレッドが持っていた所有権を放棄するには、 funlockfile() 関数を使用します。現在の所有者以外のスレッドが funlockfile() 関数を呼び出した場合の動作は未定義です。 論理的に、各ストリームに 1 つのカウントが対応しています。ストリームを作成すると、このカウントは暗黙的にゼロに初期化されます。カウントがゼロのとき、ストリームはアンロックされます。カウントが正の数の場合に、1 つのスレッドがそのストリームを所有しています。 flockfile() 関数を呼び出したときに、カウントがゼロの場合、またはカウントが正の数で呼び出し元がストリームの所有者の場合は、カウントが増分されます。そうでなければ、呼び出し元のスレッドは一時停止し、カウントがゼロに戻るまで待機します。 funlockfile() を呼び出すたびにカウントが減分されます。したがって、 flockfile() (または、正常終了した ftrylockfile() 呼び出し) と funlockfile() の組み合わせの呼び出しをネストすることができます。 (FILE *) オブジェクトを参照するすべての POSIX.1 および C の標準関数は、 (FILE *) オブジェクトの所有権を flockfile() と funlockfile() を内部で使用して取得しているように動作します。 |
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||