gthreadpool.inc 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // included by glib2.pas
  2. type
  3. { Thread Pools }
  4. { The real GThreadPool is bigger, so you may only create a thread
  5. pool with the constructor function }
  6. PGThreadPool = ^TGThreadPool;
  7. TGThreadPool = record
  8. func : TGFunc;
  9. user_data : gpointer;
  10. exclusive : gboolean;
  11. end;
  12. { Get a thread pool with the function func, at most max_threads may
  13. run at a time (max_threads == -1 means no limit), exclusive == TRUE
  14. means, that the threads shouldn't be shared and that they will be
  15. prestarted (otherwise they are started as needed) user_data is the
  16. 2nd argument to the func }
  17. function g_thread_pool_new(func:TGFunc; user_data:gpointer; max_threads:gint; exclusive:gboolean; error:PPGError):PGThreadPool; cdecl; external gliblib;
  18. { Push new data into the thread pool. This task is assigned to a thread later
  19. (when the maximal number of threads is reached for that pool) or now
  20. (otherwise). If necessary a new thread will be started. The function
  21. returns immediatly }
  22. procedure g_thread_pool_push(pool:PGThreadPool; data:gpointer; error:PPGError); cdecl; external gliblib;
  23. { Set the number of threads, which can run concurrently for that pool, -1
  24. means no limit. 0 means has the effect, that the pool won't process
  25. requests until the limit is set higher again }
  26. procedure g_thread_pool_set_max_threads(pool:PGThreadPool; max_threads:gint; error:PPGError); cdecl; external gliblib;
  27. function g_thread_pool_get_max_threads(pool:PGThreadPool):gint; cdecl; external gliblib;
  28. { Get the number of threads assigned to that pool. This number doesn't
  29. necessarily represent the number of working threads in that pool }
  30. function g_thread_pool_get_num_threads(pool:PGThreadPool):guint; cdecl; external gliblib;
  31. { Get the number of unprocessed items in the pool }
  32. function g_thread_pool_unprocessed(pool:PGThreadPool):guint; cdecl; external gliblib;
  33. { Free the pool, immediate means, that all unprocessed items in the queue
  34. wont be processed, wait means, that the function doesn't return immediatly,
  35. but after all threads in the pool are ready processing items. immediate
  36. does however not mean, that threads are killed. }
  37. procedure g_thread_pool_free(pool:PGThreadPool; immediate:gboolean; wait:gboolean); cdecl; external gliblib;
  38. { Set the maximal number of unused threads before threads will be stopped by
  39. GLib, -1 means no limit }
  40. procedure g_thread_pool_set_max_unused_threads(max_threads:gint); cdecl; external gliblib;
  41. function g_thread_pool_get_max_unused_threads:gint; cdecl; external gliblib;
  42. function g_thread_pool_get_num_unused_threads:guint; cdecl; external gliblib;
  43. { Stop all currently unused threads, but leave the limit untouched }
  44. procedure g_thread_pool_stop_unused_threads; cdecl; external gliblib;
  45. // included by glib2.pas