c - GTK2:不推荐使用 g_thread_init

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

如果有人能为我指出此类内容的正确方向,将不胜感激。必要时,任何在线文学作品以及有关该主题的书籍都会有所帮助。

提前致谢。

最佳答案

根据:

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

g_thread_init has been deprecated since version 2.32 and should not be used in newly-written code. This function is no longer necessary. The GLib threading system is automatically initialized at the start of your program.

函数原型(prototype)如下:

void g_thread_init (gpointer vtable);

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

Since version 2.32, GLib does not support custom thread implementations anymore and the vtable parameter is ignored and you should pass NULL.

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

关于c - GTK2:不推荐使用 g_thread_init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711740/

相关文章:

java - 联盟搜索算法

c - 查找 pcap.h 和链接时出现问题

linux - 如何为 OpenSSL 提供自定义编译器/链接器标志?

linux - PVOP_VCALL2 Linux函数

Java 方法有时会被线程之一跳过

c - 帮助使用 LD_PRELOAD

c - 使用openssl加密和解密一个小文件

linux - 从xml文件,bash脚本中提取值

java - 如果应用于两个线程之间共享的 bean,@Autowired 不起作用

java - 为什么主线程被阻塞