Xlib その他のクライアント・ライブラリ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/19 17:13 UTC 版)
「X Window System コアプロトコル」の記事における「Xlib その他のクライアント・ライブラリ」の解説
詳細は「Xlib」を参照 多くのクライアントプログラムは、Xlibというクライアントライブラリを通してXサーバと通信する。クライアントは一般に Xaw、Motif、GTK、Qt といったライブラリを使うが、これらもXサーバとの通信には Xlib を使っている。Xlib を使うことで、以下のようになる。 Xlib を使うと、クライアントは応答とイベントの観点で同期的に動作可能となる。Xlib では、要求を送信すると適当な応答があるまでブロックする。言い換えれば、Xlib を使っていないクライアントがあったとしたら、要求パケット送信後に応答を待つ間に他の処理が可能である。ただし、クライアントがマルチスレッド化されている場合は、Xlib を使っていても同様のことが可能である。 Xサーバは非同期にイベントを送信するが、Xlib はイベントをクライアント内のキューに蓄積する。クライアントは、明示的にライブラリ関数を呼び出したときだけそのキュー上のイベントにアクセスする。言い換えれば、クライアントがあるイベントを待っている場合、強制的にブロックまたはビジーウェイトとなる。 Xlib では要求をサーバに即座に送信せず、output buffer というキューに蓄積する。その内容が実際に送信されるのは、以下のタイミングである。XFlashなどのライブラリ関数を使って明示的に送信を要求したとき。 Xサーバからの応答を待つ必要のあるライブラリ関数を呼び出したとき(例えば、XGetWindowAttributes)。 イベントキューにイベントがあるか問い合わせたとき(例えば、XNextEvent 呼び出し)で、かつブロックするような呼び出しをしたとき(例えば、XNextEvent はキューが空だとブロックする)。 Xtのような上位ライブラリ(さらに上位として Xaw や Motif がある)では、イベントに対応したコールバック関数を使うことができる。つまり、上位ライブラリがイベントキューを常時監視し、必要に応じて適切なコールバック関数を呼び出す。また、ウィンドウの再描画が必要となるようなイベントは Xt 内部で処理される。 XCB などの下位レベルのライブラリはプロトコルへの非同期アクセスを提供し、レイテンシ隠蔽効果が大きい。
※この「Xlib その他のクライアント・ライブラリ」の解説は、「X Window System コアプロトコル」の解説の一部です。
「Xlib その他のクライアント・ライブラリ」を含む「X Window System コアプロトコル」の記事については、「X Window System コアプロトコル」の概要を参照ください。
- Xlib その他のクライアント・ライブラリのページへのリンク