• glib中关于线程池的一个实例


    #include <stdio.h>
    #include <glib.h>
    #include <pthread.h>
    #include <string.h>

    #define MAX_THREAD_NUM 10

    /**
     * @brief 线程池回调函数,线程执行的主体函数
     */
    void
    show_result(gpointer str, gpointer data)
    {

      pthread_mutex_lock(&g_lock);
      printf("The result is : %s\n", str);

      pthread_mutex_unlock(&g_lock);
    }
    /** 全局锁*/
    pthread_mutex_t g_lock;

    void
    main()
    {
      char *str = "thread_pool example";
      int count = 0;
      int g_thread_num = 0;
      GThreadPool *thread_pool;

     /**

       * 初始化互斥锁,NULL表示使用默认的快速互斥锁。

       */
      pthread_mutex_init(&g_lock, NULL);

      g_thread_init(NULL);

      thread_pool = g_thread_pool_new(show_result, NULL, MAX_THREAD_NUM, TRUE, NULL);

      if (thread_pool == NULL)
      {
        printf("g_thread_pool_new failed!\n");
        exit(0);
      }
      /**
       * 调用20次线程池
       * 实际线程池中最多有10个线程同时运行
       */
      for (count; count < 20; count++)
      {
        g_thread_pool_push(thread_pool, (gpointer)str, NULL);
      }

      g_thread_num =  g_thread_pool_get_max_threads(thread_pool);

      printf("Max number in the pthread pool: %d\n", g_thread_num);
      g_thread_pool_free(thread_pool, 0, 1);

      return;
    }

    编译:gcc `pkg-config --cflags --libs glib-2.0 gthread-2.0` -o g_thread_pool g_thread_pool.c

  • 相关阅读:
    [luoguP2770] 航空路线问题(最小费用最大流)
    javascript技巧大全套
    jLim
    自己封装的Ajax
    JavaScript函数调用规则
    JavaScript模板引擎使用
    JavaScript MD5
    JavaScript SHA-1
    JavaScript Map对象的实现
    javascript中的_return_false和return_true
  • 原文地址:https://www.cnblogs.com/bufferfly/p/2245659.html
Copyright © 2020-2023  润新知