ThreadPool.this

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.

  1. this(GThreadPool* gThreadPool, bool ownedRef)
  2. this(GFunc func, void* userData, int maxThreads, bool exclusive)
    class ThreadPool
    this

Parameters

func GFunc

a function to execute in the threads of the new thread pool

userData void*

user data that is handed over to @func every time it is called

maxThreads int

the maximal number of threads to execute concurrently in the new thread pool, -1 means no limit

exclusive bool

should this thread pool be exclusive?

Return Value

the new #GThreadPool

Throws

GException on failure. ConstructionException GTK+ fails to create the object.

Meta