方法
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 版本起可用。