Commit fef1ce37 authored by Tomasz Miąsko's avatar Tomasz Miąsko

gtask: Separate GTask fields memory locations to avoid data races

Ensure that fields that might be accessed in two different threads,
through conflicting actions are stored in seprate memory locations.
parent 5eb9f9f2
......@@ -563,15 +563,22 @@ struct _GTask {
/* This can’t be in the bit field because we access it from TRACE(). */
gboolean thread_cancelled;
gboolean check_cancellable : 1;
gboolean completed : 1;
gboolean return_on_cancel : 1;
gboolean synchronous : 1;
/* Protected by the lock when task is threaded: */
gboolean thread_complete : 1;
gboolean blocking_other_task : 1;
gboolean return_on_cancel : 1;
gboolean : 0;
/* Unprotected, but written to when task runs in thread: */
gboolean completed : 1;
gboolean had_error : 1;
gboolean result_set : 1;
gboolean ever_returned : 1;
gboolean : 0;
/* Read-only once task runs in thread: */
gboolean check_cancellable : 1;
gboolean synchronous : 1;
gboolean blocking_other_task : 1;
GError *error;
union {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment