请达人帮我分析下glib 线程池问题

发布于 2021-11-27 04:48:16 字数 1039 浏览 752 评论 1

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的那么颓废 2021-12-02 10:56:38

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);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文