gthreadpool.h 3.7 KB

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