2014-07-18 3 views
1

나는 gdk_threads_enter와 gdk_threads_leave를 사용하기 전에 이것을 알고 있지만 이제는이 함수가 사용되지 않으며 쓰레드에 대해 혼란 스럽다.GTK 3 스레드 관리

g_idle_add가있는 스레드를 추가해야합니까? UI 물건 관련이없는 근로자의 경우

+0

달성하려는 목표를 구체적으로 설명하십시오. – drahnr

답변

-1

사용 g_thread_new (name, func, data)

2

는, UI 당신이 g_idle_add/g_timeout_add를 사용하거나 원하는 이벤트 루프에 사용자 정의 GSource를 연결이 관련 아무것도에 대한 GThread API를 사용합니다. 어떤 경우에는 이들을 조합하고 싶습니다. GThread에서 일부 작업을 수행하고 작업자가 완료하자 마자 g_idle_add을 통해 UI에 알립니다.

라이브러리를 개발중인 경우 GAsyncInitableIface을 통해 매우 깨끗하고 취소 가능한 방식으로 구현할 수도 있습니다 (실제로 구현하기 전에 약간의 정보가 필요함). @ ptomato의 의견에 대응


:

당신은 아래 컨트롤을 사용 할 수 없습니다 라이브러리 이후 gdk_threads_add_idle()와 gdk_threads_add_timeout() 대신 g_idle_add()와 g_timeout_add()를 사용한다

사용되지 않는 GDK 잠금 메커니즘 응용 프로그램 및 라이브러리의 코드 중 이 사용되지 않는 gdk_threads_enter() 또는 gdk_threads_leave() 메소드 인 을 사용하지 않는다고 확신하면 g_idle_add() 및 g_timeout_add()를 안전하게 사용할 수 있습니다.

+0

감사합니다. g_idle_add를 계속 사용하겠습니다. – darekg11

+1

유휴/시간 초과 콜백에서 GTK를 사용하려면'gdk_threads_add_idle()'/'gdk_threads_add_timeout()'을 사용해야합니다. – ptomato