5.4. Anaconda 스레드 간 통신


설치 프로세스 중에 수행해야 하는 일부 작업은 시간이 오래 걸릴 수 있습니다. 예를 들어 기존 파티션의 디스크를 스캔하거나 패키지 메타데이터를 다운로드합니다. 대기 및 나머지 응답 시간을 방지하기 위해 Anaconda 는 이러한 작업을 별도의 스레드에서 실행합니다.

Gtk 툴킷은 여러 스레드의 요소 변경을 지원하지 않습니다. Gtk 의 주요 이벤트 루프는 Anaconda 프로세스의 기본 스레드에서 실행됩니다. 따라서 GUI와 관련된 모든 작업은 기본 스레드에서 수행해야 합니다. 이렇게 하려면 GLib.idle_add 를 사용하십시오. 이는 항상 쉽고 원하는 것은 아닙니다. pyanaconda.ui.gui.utils 모듈에 정의된 여러 도우미 함수 및 데코레이터가 챌린지에 추가할 수 있습니다.

이 함수 또는 메서드를 호출할 때 해당 함수 또는 메서드를 호출할 때 기본 스레드에서 실행되는 Gtk의 기본 루프에 자동으로 큐에 큐에 저장되면 기본 스레드에서 실행되는 Gtk _action_ wait 및 @managek_action_nowait 데코레이터가 장식된 함수 또는 메서드를 변경합니다. 반환 값은 호출자로 반환되거나 각각 삭제됩니다.

대화 상자 및 허브 통신에서 대화 상대는 준비가 되어 있고 차단되지 않을 때 발표되었습니다. hubQ 메시지 큐는 이 기능을 처리하고 주기적으로 기본 이벤트 루프를 확인합니다. 대화 상자에 액세스 할 수 있게 되면 변경 사항을 발표하는 대기열에 메시지를 보내고 더 이상 차단해서는 안 됩니다.

spoke에서 상태를 새로 고치거나 플래그를 완료해야 하는 경우에도 동일하게 적용됩니다. 구성 및 진행률 허브에 는 설치 진행 상황 업데이트를 전송하기 위한 매체 역할을 하는 progressQ 라는 다른 큐가 있습니다.

이러한 메커니즘은 텍스트 기반 인터페이스에도 사용됩니다. 텍스트 모드에서는 기본 루프가 없지만 키보드 입력은 대부분의 시간을 사용합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.