是否有从 glib 中的线程池加入线程的函数?
Is there a function to join threads from thread pool in glib?
这里是示例程序。
#include<glib.h>
void call_me(gpointer data, gpointer user_data)
{
g_usleep(1);
g_print("I am called!\n");
}
int main(int argc, char *argv[])
{
GThreadPool* th_pool = g_thread_pool_new((GFunc)call_me, NULL, 200, TRUE, NULL);
for(int i = 0; i < 10; ++i){
g_thread_pool_push(th_pool, (void*)10, NULL);
}
return 0;
}
我认为解决方案是在线程池中加入线程,因为问题是主线程 returns 在所有线程获得它们的时间之前。但是,我在 Glib 中找不到函数。如果有其他方法可以解决问题,能否请您突出显示?
呼叫g_thread_pool_free (th_pool, TRUE, TRUE)
。它将等待所有挂起的任务完成 运行,然后释放 GThreadPool
.
使用的内存
这里是示例程序。
#include<glib.h>
void call_me(gpointer data, gpointer user_data)
{
g_usleep(1);
g_print("I am called!\n");
}
int main(int argc, char *argv[])
{
GThreadPool* th_pool = g_thread_pool_new((GFunc)call_me, NULL, 200, TRUE, NULL);
for(int i = 0; i < 10; ++i){
g_thread_pool_push(th_pool, (void*)10, NULL);
}
return 0;
}
我认为解决方案是在线程池中加入线程,因为问题是主线程 returns 在所有线程获得它们的时间之前。但是,我在 Glib 中找不到函数。如果有其他方法可以解决问题,能否请您突出显示?
呼叫g_thread_pool_free (th_pool, TRUE, TRUE)
。它将等待所有挂起的任务完成 运行,然后释放 GThreadPool
.