run_in_thread


Description:

[ Version ( since = "2.36" ) ]
public void run_in_thread (TaskThreadFunc task_func)

Runs task_func in another thread.

When task_func returns, this's TaskReadyCallback will be invoked in this's MainContext.

This takes a ref on this until the task completes.

See TaskThreadFunc for more details about how task_func is handled.

Although GLib currently rate-limits the tasks queued via run_in_thread, you should not assume that it will always do this. If you have a very large number of tasks to run (several tens of tasks), but don't want them to all run at once, you should only queue a limited number of them (around ten) at a time.

Be aware that if your task depends on other tasks to complete, use of this function could lead to a livelock if the other tasks also use this function and enough of them (around 10) execute in a dependency chain, as that will exhaust the thread pool. If this situation is possible, consider using a separate worker thread or thread pool explicitly, rather than using run_in_thread.

Parameters:

this

a Task

task_func

a TaskThreadFunc