c - 是否有从 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;
}
我认为解决方案是加入线程池中的线程,因为问题是主线程在所有线程获得时间之前返回。但是,我在 Glib 中找不到函数。如果有其他方法可以解决问题,您能否突出显示它们?
解决方案
打电话g_thread_pool_free (th_pool, TRUE, TRUE)
。它将等待所有挂起的任务完成运行,然后释放GThreadPool
.
推荐阅读
- wordpress - 如何在 AWS lightail 上恢复丢失的 WordPress 管理员权限
- python - Django Admin 更改/修改内联文本“添加另一个”
- reactjs - 从 Firebase 存储调用图像 - 无效的钩子调用。Hooks 只能在函数组件的主体内部调用
- flutter - 在颤动中将 html 小部件共享给其他 Android 应用程序
- delphi - Delphi Pascal 5 中的 Eratosthenes 筛
- python - PyObjC:访问 MPNowPlayingInfoCenter
- c++ - C++20 缩写函数模板的限制
- c - 在c中将字符串转换为time_t
- owl - 通过dotNetRDF从owl获取DataProperty的值
- python - Facebook Prophet,识别我的数据的季节性