Leksykon IT › Sieci › Obieg żądania (X11)

Obieg żądania (X11)

Sieci Svenska → Zaktualizowano: 2026-10-10

Żądanie, które musi zaczekać na odpowiedź serwera, zanim program pójdzie dalej: najdroższa operacja protokołu X i powód, dla którego toolkit potrafił startować całymi sekundami przez wolne łącze.

Większość żądań X — narysuj linię, przesuń okno — nie ma odpowiedzi; Xlib kolejkuje je w buforze i wysyła partiami. Ale XInternAtom, XGetWindowAttributes, XQueryTree, XGetGeometry i XSync wymagają odpowiedzi, a Xlib blokuje się, dopóki ta nie nadejdzie. Lokalnie przez gniazdo uniksowe to ułamek milisekundy; w sieci z opóźnieniem 50 ms każde takie żądanie oznacza jedną dwudziestą sekundy postoju. Aplikacja Motif mogła przy starcie zarejestrować setki atomów i zapytać o geometrię każdego widżetu, co dawało znajome oczekiwanie na terminalach X i przez modemy.

Środków zaradczych było wiele. Xlib dostał XInternAtoms, by pobierać wiele atomów w jednej odpowiedzi. LBX, a później NX ustawiały obok serwera pośrednika, który odpowiadał z pamięci podręcznej. XCB powstało w 2001 roku właśnie w tym celu: każde żądanie od razu zwraca cookie, a odpowiedź odbiera się dopiero, gdy jest potrzebna, więc w locie może być dziesięć pytań naraz. Toolkity nauczyły się buforować atrybuty okien zamiast o nie pytać. Szczególnym przypadkiem jest obsługa błędów: ponieważ błędy zgłaszane są asynchronicznie, program nie wie, że wywołanie się nie powiodło, aż do następnego obiegu, przez co procedurę obsługi błędów X tak trudno ogarnąć rozumem.

← Wróć do leksykonu