### Function

# Gio TaskThreadFunc

since: 2.36

#### Declaration

    void
    (* GTaskThreadFunc) (
      GTask* task,
      GObject* source_object,
      gpointer task_data,
      GCancellable* cancellable
    )

#### Description

The prototype for a task function to be run in a thread via `g_task_run_in_thread()` or g_task_run_in_thread_sync().

If the return-on-cancel flag is set on `task`, and `cancellable` gets cancelled, then the `GTask` will be completed immediately (as though `g_task_return_error_if_cancelled()` had been called), without waiting for the task function to complete. However, the task function will continue running in its thread in the background. The function therefore needs to be careful about how it uses externally-visible state in this case. See `g_task_set_return_on_cancel()` for more details.

Other than in that case, `task` will be completed when the `GTaskThreadFunc` returns, not when it calls a `g_task_return_` function.

Available since: 2.36

#### Parameters

`task`

  Type: `GTask`

  The `GTask`.

  The data is owned by the caller of the function.

`source_object`

  Type: `GObject`

  `task`‘s source object.

  The data is owned by the caller of the function.

`task_data`

  Type: `gpointer`

  `task`‘s task data.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`cancellable`

  Type: `GCancellable`

  `task`‘s `GCancellable`, or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.