IT用語集 › ネットワーク › ラウンドトリップ(X11)

ラウンドトリップ(X11)

ネットワーク Svenska → 更新: 2026-10-23

プログラムが先へ進む前にサーバの応答を待たねばならないリクエスト。Xプロトコルで最も高価な操作であり、遅い回線でツールキットの起動に数秒かかる原因だった。

Xのリクエストの大半、たとえば線を引く、ウィンドウを動かすといった操作には応答がなく、Xlibはそれらをバッファにため、まとめて送る。しかしXInternAtom、XGetWindowAttributes、XQueryTree、XGetGeometry、XSyncは答えが必要で、Xlibは届くまでブロックする。ローカルのUnixソケットなら1ミリ秒に満たないが、レイテンシ50ミリ秒のネットワークでは、1回ごとに20分の1秒、止まってしまう。Motifアプリは起動時に数百のアトムを登録し、すべてのウィジェットのジオメトリを問い合わせることがあり、Xターミナルやモデム経由でおなじみの待ち時間を生んだ。

対策は数多く試された。Xlibは多数のアトムを1回の応答で取得するXInternAtomsを得た。LBX、のちにはNXが、サーバの隣に置いたプロキシでキャッシュから答えた。XCBはまさにこのために2001年に作られ、すべてのリクエストが即座にクッキーを返し、応答は必要になったときにだけ受け取るので、10個の質問を同時に飛ばせる。ツールキットもウィンドウ属性を毎回尋ねずキャッシュするようになった。エラー処理は特殊なケースで、エラーが非同期に報告されるため、プログラムは次のラウンドトリップまで呼び出しの失敗に気づかない。Xエラーハンドラの挙動が追いにくい理由はここにある。

← 用語集に戻る