(root)/
glib-2.79.0/
glib/
gthreadpool.h
       1  /* GLIB - Library of useful routines for C programming
       2   * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
       3   *
       4   * SPDX-License-Identifier: LGPL-2.1-or-later
       5   *
       6   * This library is free software; you can redistribute it and/or
       7   * modify it under the terms of the GNU Lesser General Public
       8   * License as published by the Free Software Foundation; either
       9   * version 2.1 of the License, or (at your option) any later version.
      10   *
      11   * This library is distributed in the hope that it will be useful,
      12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14   * Lesser General Public License for more details.
      15   *
      16   * You should have received a copy of the GNU Lesser General Public
      17   * License along with this library; if not, see <http://www.gnu.org/licenses/>.
      18   */
      19  
      20  /*
      21   * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
      22   * file for a list of people on the GLib Team.  See the ChangeLog
      23   * files for a list of changes.  These files are distributed with
      24   * GLib at ftp://ftp.gtk.org/pub/gtk/.
      25   */
      26  
      27  #ifndef __G_THREADPOOL_H__
      28  #define __G_THREADPOOL_H__
      29  
      30  #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
      31  #error "Only <glib.h> can be included directly."
      32  #endif
      33  
      34  #include <glib/gthread.h>
      35  
      36  G_BEGIN_DECLS
      37  
      38  typedef struct _GThreadPool GThreadPool;
      39  
      40  /* Thread Pools
      41   */
      42  
      43  struct _GThreadPool
      44  {
      45    GFunc func;
      46    gpointer user_data;
      47    gboolean exclusive;
      48  };
      49  
      50  GLIB_AVAILABLE_IN_ALL
      51  GThreadPool *   g_thread_pool_new               (GFunc            func,
      52                                                   gpointer         user_data,
      53                                                   gint             max_threads,
      54                                                   gboolean         exclusive,
      55                                                   GError         **error);
      56  GLIB_AVAILABLE_IN_2_70
      57  GThreadPool *   g_thread_pool_new_full          (GFunc            func,
      58                                                   gpointer         user_data,
      59                                                   GDestroyNotify   item_free_func,
      60                                                   gint             max_threads,
      61                                                   gboolean         exclusive,
      62                                                   GError         **error);
      63  GLIB_AVAILABLE_IN_ALL
      64  void            g_thread_pool_free              (GThreadPool     *pool,
      65                                                   gboolean         immediate,
      66                                                   gboolean         wait_);
      67  GLIB_AVAILABLE_IN_ALL
      68  gboolean        g_thread_pool_push              (GThreadPool     *pool,
      69                                                   gpointer         data,
      70                                                   GError         **error);
      71  GLIB_AVAILABLE_IN_ALL
      72  guint           g_thread_pool_unprocessed       (GThreadPool     *pool);
      73  GLIB_AVAILABLE_IN_ALL
      74  void            g_thread_pool_set_sort_function (GThreadPool      *pool,
      75                                                   GCompareDataFunc  func,
      76                                                   gpointer          user_data);
      77  GLIB_AVAILABLE_IN_2_46
      78  gboolean        g_thread_pool_move_to_front     (GThreadPool      *pool,
      79                                                   gpointer          data);
      80  
      81  GLIB_AVAILABLE_IN_ALL
      82  gboolean        g_thread_pool_set_max_threads   (GThreadPool     *pool,
      83                                                   gint             max_threads,
      84                                                   GError         **error);
      85  GLIB_AVAILABLE_IN_ALL
      86  gint            g_thread_pool_get_max_threads   (GThreadPool     *pool);
      87  GLIB_AVAILABLE_IN_ALL
      88  guint           g_thread_pool_get_num_threads   (GThreadPool     *pool);
      89  
      90  GLIB_AVAILABLE_IN_ALL
      91  void            g_thread_pool_set_max_unused_threads (gint  max_threads);
      92  GLIB_AVAILABLE_IN_ALL
      93  gint            g_thread_pool_get_max_unused_threads (void);
      94  GLIB_AVAILABLE_IN_ALL
      95  guint           g_thread_pool_get_num_unused_threads (void);
      96  GLIB_AVAILABLE_IN_ALL
      97  void            g_thread_pool_stop_unused_threads    (void);
      98  GLIB_AVAILABLE_IN_ALL
      99  void            g_thread_pool_set_max_idle_time      (guint interval);
     100  GLIB_AVAILABLE_IN_ALL
     101  guint           g_thread_pool_get_max_idle_time      (void);
     102  
     103  G_END_DECLS
     104  
     105  #endif /* __G_THREADPOOL_H__ */