RoadRunner Reference Manual | |||
---|---|---|---|
<<< Previous Page | Home | Up | Next Page >>> |
struct RRWaiter; RRWaiter* rr_waiter_new (void); void rr_waiter_free (RRWaiter *waiter); void rr_waiter_set_done (RRWaiter *waiter, GError *error); gboolean rr_waiter_wait (RRWaiter *waiter, GError **error); void rr_waiter_set_user_data (RRWaiter *waiter, gpointer user_data); gpointer rr_waiter_get_user_data (RRWaiter *waiter); |
RRWaiter can be used for thread synchronization..
RRWaiter *waiter = rr_waiter_new(); /* wait for some other thread to deliver the result */ if (rr_waiter_wait (waiter, error) == FALSE) { g_error ("operation failed: s\n", error->message); } g_print ("result: s\n", rr_waiter_get_user_data (waiter)); ----------------------------------------------------------- | in some other thread | ----------------------------------------------------------- /* if the operation was successful: * store eventual result in the waiter object and. * signal that the result is available... */ rr_waiter_set_user_data (waiter, "foo"); rr_waiter_set_done (waiter, NULL); /* or if the operation failed: * Store an error message in "error" * and signal a failure */ rr_waiter_set_done (waiter, error); |
RRWaiter* rr_waiter_new (void); |
Creates a new RRWaiter instance.
Returns : | a new RRWaiter instance. |
void rr_waiter_free (RRWaiter *waiter); |
free the resources allocated by waiter.
waiter : | a RRWaiter instance |
void rr_waiter_set_done (RRWaiter *waiter, GError *error); |
Ublock all waiting threads.
waiter : | a RRWaiter instance |
error : | an error message or NULL |
gboolean rr_waiter_wait (RRWaiter *waiter, GError **error); |
block until some other thread unlocks with a rr_waiter_set_done call.
waiter : | a RRWaiter instance |
error : | a location to store eventual error messages. |
Returns : | TRUE if the "error" argument to rr_waiter_set_done is NULL. |
void rr_waiter_set_user_data (RRWaiter *waiter, gpointer user_data); |
store user_data within the RRWaiter instance.
waiter : | a RRWaiter instance |
user_data : | custom user data |