2011-12-18 1 views
1

GTK + 응용 프로그램에 GtkTextBuffer가 있습니다. 긴 작업을 수행하는 여러 작업자 스레드를 사용합니다. 이러한 쓰레드는 진행 상황을 텍스트 형식으로보고 할 수 있습니다. 나는 작업자 스레드가 어떻게 수행되고 있는지에 대한 세부 사항을 보여주고 싶다. 작업자 스레드로부터 입력을받는 방법을 알려주시겠습니까?GTK + 응용 프로그램 : 작업자 스레드로부터 입력 받기

작업자 스레드에서 신호 "insert-text"를 내보낼 수 있다고 생각했지만 인터넷 검색 중 관련 예제를 찾을 수 없습니다. 어떤 도움이라도 대단히 감사합니다.

+0

예제를 찾을 수 없습니까? – ptomato

+0

작업자 스레드에서 신호를 발생시키는 방법의 예. 내가 그렇게 할 수 있니? –

+0

메인 쓰레드 인'g_signal_emit()'또는'g_signal_emit_by_name()'에서 신호를 내보내는 것과 같습니다. 시그널 핸들러는 GDK 잠금을 유지하면서 메인 쓰레드에서 호출된다. – ptomato

답변

0

클래식 빠르고 지저분한 상태 : 동기화 목록 (일부 동기화 프리미티브로 보호 됨)에 상태 업데이트를 작성하고 GTK 기본 루프에서 타이머를 통해 폴링하도록하십시오.

1

UI와 작업자 스레드 간의 메시징에 GAsyncQueue을 사용할 수 있습니다. 통신용 API는 매우 완성품입니다.

+0

API를 살펴 보았습니다 (제안 해 주셔서 고맙습니다). 그러나 주 루프를 통해 신호를 푸시하는 방법은 분명하지 않습니다. 그들을 위해 (타이머 또는 유휴 처리 중 하나를 사용하여) 풀링은 비효율적입니다. 재미있는 일이 일어 났을 때 알려주고 싶습니다. 그래서 나는 작업자 스레드에서 신호를 시작하는 것에 대해 생각했습니다. –