XLockDisplay(3) マルチスレッドのサポート

Other Alias

XInitThreads, XUnlockDisplay

書式

Status XInitThreads();

void XLockDisplay(display)

      Display *display;

void XUnlockDisplay(display)

      Display *display;

引き数

display
X サーバへの接続を指定。

説明

関数 XInitThreads は Xlib のコンカレントスレッドのサポートを初期化する。 この関数はマルチスレッドのプログラムの最初の Xlib の関数でなければなら ず、他の Xlib の関数が呼ばれる前に動作終了していなければならない。 この関数は初期化に成功すれば 0 でない値を返し、失敗すれば 0 を返す。 スレッドをサポートしていないシステムの場合、この関数は必ず 0 を返す。

複数スレッドで Xlib の関数を平行して使う場合には、この関数を呼び出すだ けでよい。Xlib の関数の呼び出し全ては他のアクセス機構によって保護され (例えば、ツールキットで使われる共通の排他ロックやクライアントプログラ ムでの明示的な処理)、Xlib のスレッド初期化は必要ではない。 単独スレッドのプログラムでは、この関数は呼ばない方がよい。

XLockDisplay は指定したディスプレイの使用に関して、他の全てのスレッドを締め出す。 このスレッドによってディスプレイのロックが解除されるまで、ディスプレイ を使用とする他のスレッドはブロックされる。 XLockDisplay を重ねて呼び出しても正しく動作する。 この場合、 XLockDisplay と同じ回数だけ XUnlockDisplay を呼び出すまでディスプレイのロックは解除されない。 XInitThreads を用いてスレッドの初期化に成功していなければ、この関数は無効である。

関数 XUnlockDisplay は、指定したディスプレイを再び他のスレッドでも使えるようにする。 そのディスプレイでブロックされていた全てのスレッドは動作の続きを行うこ とができる。 多重ロッキングも正しく動作する。 あるスレッドが複数回 XLockDisplay を呼び出した場合、実際にディスプレイのロックを解除するためには同じ回数 だけ XUnlockDisplay を呼び出す必要がある。
 .ZN XInitThreads を使った Xlib のスレッドの初期化に成功していなければ、この関数は無効で ある。