我有一個C++應用程序必須在某些事件上創建一個基於gtk的彈出窗口。 目前,我在該事件中分叉了一個名爲_displaytask
的線程,該線程調用gtk_init()
。 對gtk_init
的呼叫掛起並永不返回。任何人都知道這個電話爲什麼會掛起? gtk版本是gtk + -2.0。gtk_init掛起在一個線程
void* Gui::displayTask(void *data)
{
IDC_TRACE("Gui::display task tart");
Gui* obj=(Gui *)data;
if(obj!=NULL)
{
if(! g_thread_supported())
g_thread_init(NULL);
/* Secure gtk */
gdk_threads_init();
gdk_threads_enter();
IDC_TRACE("doing a gtk init");
gtk_init_check(0,0);
obj->initialise();
該控件達到gtk_init()
,但從來沒有超過它達到初始化。
一般'gtk_init'和'gtk_main'應該從'main'線程調用。 – 2014-10-28 07:51:54
試過...仍然掛起。實際上主線程(進程)是一個服務器。它有CORBA演員的概念。 – basav 2014-10-28 08:45:40