c#-是否会按严格的时间顺序调用GTK超时回调?
作者:互联网
当我在不是主线程(gtk_main()所在的线程)的线程中添加许多不同的超时(每个intervall == 0)时…
g_timeout_add(0, func, NULL);
…然后,不同的func()回调会以我调用相应g_timeout_add()的顺序发生吗?
我问的原因是因为GTK#在内部使用超时来实现Application.Invoke()
(请参阅Application.cs和Timeout.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