g_timeout_add 方便我们定时执行某段代码,看似是并发处理,经测试还是单线程执行的,只是在g_main_loop中适当的时间点执行了我们指定的函数,测试代码:
#include <gtk/gtk.h>
gboolean fun1(gpointer pdata)
{
while(1)
{
sleep(1);
printf("fun1/n");
}
return FALSE;
}
gboolean fun2(gpointer pdata)
{
while(1)
{
sleep(1);
printf("fun2/n");
}
return FALSE;
}
int main( int argc, char *argv[] )
{
gtk_init ( &argc, &argv );
g_timeout_add(500,fun1,NULL);
g_timeout_add(900,fun2,NULL);
gtk_main();
return 0;
}
带测试代码一直会打印fun1,真个主循环被阻塞在while(1)中
#include <gtk/gtk.h>
gboolean fun1(gpointer pdata)
{
while(1)
{
sleep(1);
printf("fun1/n");
}
return FALSE;
}
gboolean fun2(gpointer pdata)
{
while(1)
{
sleep(1);
printf("fun2/n");
}
return FALSE;
}
int main( int argc, char *argv[] )
{
gtk_init ( &argc, &argv );
g_timeout_add(500,fun1,NULL);
g_timeout_add(900,fun2,NULL);
gtk_main();
return 0;
}
带测试代码一直会打印fun1,真个主循环被阻塞在while(1)中