方法

GioTaskset_return_on_cancel

自从:2.36

声明 [源代码]

gboolean
g_task_set_return_on_cancel (
  GTask* task,
  gboolean return_on_cancel
)

描述 [源代码]

设置或清除 task 的返回-on-cancel 标志。这仅对通过 g_task_run_in_thread() 或 g_task_run_in_thread_sync() 执行的任务有意义。

如果 return_on_cancelTRUE,则取消 taskGCancellable 将立即使其返回,就像任务已调用 g_task_return_error_if_cancelled() 然后返回一样。

这允许您创建一个可取消的包装器来包装不可中断的函数。《GTaskThreadFunc》只需要小心在其被取消后不要修改任何外部可见状态。为了做到这一点,线程应在做出外部可见更改之前再次调用 g_task_set_return_on_cancel() 以(原子地)设置返回-on-cancel FALSE;如果在返回-on-cancel 标志可以更改之前任务被取消,则 g_task_set_return_on_cancel() 将通过返回 FALSE 来表示这一点。

如果您愿意,可以多次禁用和启用此标志。如果在 return_on_cancelFALSE 时取消任务,则调用 g_task_set_return_on_cancel() 将该标志再次设置为 TRUE 将导致任务在此点被取消。

如果在调用 g_task_run_in_thread()/g_task_run_in_thread_sync() 之前任务已取消的 GCancellable,则 GTaskThreadFunc 仍将被运行(为了保持一致性),但任务也会立即完成。

自 2.36 版本起可用。

参数

return_on_cancel

类型: gboolean

当任务被取消时,任务是否会自动返回。

返回值

类型: gboolean

TRUE 如果 task 的返回取消标志已更改为与 return_on_cancel 匹配。如果 task 已经被取消,则返回 FALSE