请达人帮我分析下glib 线程池问题
glibtest.c
#include <glib.h> static void test_function(gpointer data,gpointer user_data) { gint i; i=GPOINTER_TO_INT(data); g_print("test %dn",i); } int main() { GThreadPool *pool = NULL; GError *error = NULL; gint i,gthreadcount; GMutex *mutex; if(!g_thread_supported()) { g_thread_init(NULL); } mutex = g_mutex_new(); pool=g_thread_pool_new(test_function,NULL,-1,FALSE,&error); if(pool == NULL) { g_print("can not create thread"); } gthreadcount = g_thread_pool_get_num_threads(pool); g_print("%dn",gthreadcount); g_mutex_lock(mutex); for(i = 1; i < 10 ; i++) { g_thread_pool_push(pool, (gpointer *)i , &error); } g_mutex_unlock(mutex); }
上面这段代码用编译命令:gcc glibtest.c -o glibtest `pkg-config --cflags --libs gthread-2.0 glib-2.0` 编译
执行后控制台打印出0 ,不知道为什么 ,我是在rhel 5下编译的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
g_thread_pool_push(pool, (gpointer *)i , &error); --->>>
g_thread_pool_push(pool, (gpointer)i , &error); or
g_thread_pool_push(pool, GSIZE_TO_POINTER(i) , &error);