编程语言
首页 > 编程语言> > c#-是否会按严格的时间顺序调用GTK超时回调?

c#-是否会按严格的时间顺序调用GTK超时回调?

作者:互联网

当我在不是主线程(gtk_main()所在的线程)的线程中添加许多不同的超时(每个intervall == 0)时…

g_timeout_add(0, func, NULL);

…然后,不同的func()回调会以我调用相应g_timeout_add()的顺序发生吗?

我问的原因是因为GTK#在内部使用超时来实现Application.Invoke()(请参阅Application.csTimeout.cs).

编辑:有关的glib文件是

> http://git.gnome.org/browse/glib/tree/glib/gmain.c
> http://git.gnome.org/browse/glib/tree/glib/ghook.c

解决方法:

在内部,g_timeout_add调用g_hook_insert_sorted.如果使用g_timeout_add_full,则优先级确定顺序,否则将挂钩添加到列表的末尾.挂钩是按顺序执行的,因此仅使用g_timeout_add时,答案是肯定的.

不幸的是,没有明确的保证,对我来说,它看起来像一个实现细节,将来可能会更改.

标签:multithreading,gtk,gtk-2,c,c-4
来源: https://codeday.me/bug/20191106/2001433.html