Function
GLibThreadPoolnew
Declaration
GThreadPool*
g_thread_pool_new (
GFunc func,
gpointer user_data,
gint max_threads,
gboolean exclusive,
GError** error
)
Description
This function creates a new thread pool.
Whenever you call g_thread_pool_push(), either a new thread is
created or an unused one is reused. At most max_threads
threads
are running concurrently for this thread pool. max_threads
= -1
allows unlimited threads to be created for this thread pool. The
newly created or reused thread now executes the function func
with the two arguments. The first one is the parameter to
g_thread_pool_push()
and the second one is user_data
.
Pass g_get_num_processors()
to max_threads
to create as many threads as
there are logical processors on the system. This will not pin each thread to
a specific processor.
The parameter exclusive
determines whether the thread pool owns
all threads exclusive or shares them with other thread pools.
If exclusive
is TRUE
, max_threads
threads are started
immediately and they will run exclusively for this thread pool
until it is destroyed by g_thread_pool_free(). If exclusive
is
FALSE
, threads are created when needed and shared between all
non-exclusive thread pools. This implies that max_threads
may
not be -1 for exclusive thread pools. Besides, exclusive thread
pools are not affected by g_thread_pool_set_max_idle_time()
since their threads are never considered idle and returned to the
global pool.
error
can be NULL
to ignore errors, or non-NULL
to report
errors. An error can only occur when exclusive
is set to TRUE
and not all max_threads
threads could be created.
See GThreadError
for possible errors that may occur.
Note, even in case of error a valid GThreadPool
is returned.
Parameters
func |
GFunc |
A function to execute in the threads of the new thread pool. |
|
user_data |
gpointer |
User data that is handed over to |
|
The argument can be NULL . | |
The data is owned by the caller of the function. | |
max_threads |
gint |
The maximal number of threads to execute concurrently in the new thread pool, -1 means no limit. |
|
exclusive |
gboolean |
Should this thread pool be exclusive? |
|
error |
GError ** |
The return location for a GError* , or NULL . |
Return value
Returns: | GThreadPool |
The new |
|
The data is owned by the called function. |