方法
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_cancel 是 TRUE,则取消 task 的 GCancellable 将立即使其返回,就像任务已调用 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_cancel 为 FALSE 时取消任务,则调用 g_task_set_return_on_cancel() 将该标志再次设置为 TRUE 将导致任务在此点被取消。
如果在调用 g_task_run_in_thread()/g_task_run_in_thread_sync() 之前任务已取消的 GCancellable,则 GTaskThreadFunc 仍将被运行(为了保持一致性),但任务也会立即完成。
自 2.36 版本起可用。