我有一个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