2013-12-20 45 views
4

这是我第一次尝试制作一个线程化的软件。这将是基于Arch Linux的GTK2。GTK2:g_thread_init已弃用

我跟着的例子在这里:

Threaded animation with Cairo

使用在底部SIGALRM的例子。

我得到以下警告,当我编译:

warning: 'g_thread_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:260) [-Wdeprecated-declarations] 
if (!g_thread_supported()){ g_thread_init(NULL); } 

我试图找到我应该如何去了解这些信息。在这个警告中,唯一出现在线的事情是软件的错误报告在编译时会抛出相同的错误。很多报道似乎只是说删除这条线。

我只是删除该行并保持其余的完整?或者有更好的方法去解决这个问题吗?

我正在使用触摸屏在Raspberry Pi Model B上运行信息娱乐系统,我想确保它像iPhone一样活泼,因此为什么我想要在高优先级线程中运行图形和用户输入内容。

如果任何人都可以指出我对这种类型的东西正确的方向,这将不胜感激。如有必要,任何一篇在线文献都可以帮助读者理解这方面的书籍。

在此先感谢。

+1

你知道它被替换了吗? –

+0

@FiddlingBits不,似乎无法找到任何有关它。看起来glib只是根据我的理解自动处理那部分内容,但由于我不确定,所以我宁愿问一些在这个部门有经验的专业人员。 – ReX357

+1

我会建议使用GTK3 .... –

回答

5

据:

https://developer.gnome.org/glib/2.34/glib-Deprecated-Thread-APIs.html#g-thread-init

g_thread_init已经从2.32版本弃用,不应该在新编写的代码中使用。这个功能不再需要。 GLib线程系统在程序开始时自动初始化。

功能的原型如下:

由于2.32版本,GLib的不支持自定义线程实现了和vtable

void g_thread_init (gpointer vtable); 

这在上述链接中也提到参数被忽略,你应该通过NULL

奇怪的是,在一个声明中他们说你不应该使用它,然后在另一个说如果你使用它,传递NULL作为它的参数。无论哪种方式,如果你使用Glib> = 2.32,调用它就不再需要了。

+0

那么这意味着取出线,保持其余的一样?就像Gtk默认线程一样? – ReX357

+0

这是要求你。你不能传递它的参数。 –