gthreadpool.h 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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_ALL
  60. gboolean g_thread_pool_set_max_threads (GThreadPool *pool,
  61. gint max_threads,
  62. GError **error);
  63. GLIB_AVAILABLE_IN_ALL
  64. gint g_thread_pool_get_max_threads (GThreadPool *pool);
  65. GLIB_AVAILABLE_IN_ALL
  66. guint g_thread_pool_get_num_threads (GThreadPool *pool);
  67. GLIB_AVAILABLE_IN_ALL
  68. void g_thread_pool_set_max_unused_threads (gint max_threads);
  69. GLIB_AVAILABLE_IN_ALL
  70. gint g_thread_pool_get_max_unused_threads (void);
  71. GLIB_AVAILABLE_IN_ALL
  72. guint g_thread_pool_get_num_unused_threads (void);
  73. GLIB_AVAILABLE_IN_ALL
  74. void g_thread_pool_stop_unused_threads (void);
  75. GLIB_AVAILABLE_IN_ALL
  76. void g_thread_pool_set_max_idle_time (guint interval);
  77. GLIB_AVAILABLE_IN_ALL
  78. guint g_thread_pool_get_max_idle_time (void);
  79. G_END_DECLS
  80. #endif /* __G_THREADPOOL_H__ */