GTK2:g_thread_init已弃用

时间:2013-12-20 20:50:35

标签: c linux multithreading gtk gtk2

这是我第一次尝试制作一个线程软件。它将是基于Arch Linux的GTK2。

我从这里跟随了例子:

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一样快感,因此我想在高优先级线程中运行图形和用户输入内容。 / p>

如果有人能指出我正确的方向为这类东西,我将不胜感激。如有必要,任何在线文学作品都会有所帮助。

提前致谢。

1 个答案:

答案 0 :(得分:6)

根据:

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

  

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

函数原型如下:

void g_thread_init (gpointer vtable);

上面的链接也提到了这一点:

  

从版本2.32开始,GLib不再支持自定义线程实现,并忽略vtable参数,您应该传递NULL

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