| Evolution API Reference: libedataserver, utility library | ||||
|---|---|---|---|---|
| Top | Description | ||||
EFlag;
EFlag * e_flag_new (void);
gboolean e_flag_is_set (EFlag *flag);
void e_flag_set (EFlag *flag);
void e_flag_clear (EFlag *flag);
void e_flag_wait (EFlag *flag);
gboolean e_flag_timed_wait (EFlag *flag,
GTimeVal *abs_time);
void e_flag_free (EFlag *flag);
An EFlag is a simple thread synchronization mechanism. It implements a thread-safe flag that can be blocked on.
typedef struct _EFlag EFlag;
The EFlag struct is an opaque data structure representing a thread-safe flag. It should be accessed only by using the following functions.
EFlag * e_flag_new (void);
Creates a new EFlag object. It is initially unset.
Returns : |
a new EFlag |
gboolean e_flag_is_set (EFlag *flag);
Returns the state of flag.
|
an EFlag |
Returns : |
TRUE if flag is set
|
void e_flag_set (EFlag *flag);
Sets flag. All threads waiting on flag are woken up. Threads that
call e_flag_wait() or e_flag_timed_wait() once flag is set will not
block at all.
|
an EFlag |
void e_flag_clear (EFlag *flag);
Unsets flag. Subsequent calls to e_flag_wait() or e_flag_timed_wait()
will block until flag is set.
|
an EFlag |
void e_flag_wait (EFlag *flag);
Blocks until flag is set. If flag is already set, the function returns
immediately.
|
an EFlag |
gboolean e_flag_timed_wait (EFlag *flag, GTimeVal *abs_time);
Blocks until flag is set, or until the time specified by abs_time.
If flag is already set, the function returns immediately. The return
value indicates the state of flag after waiting.
If abs_time is NULL, e_flag_timed_wait() acts like e_flag_wait().
To easily calculate abs_time, a combination of g_get_current_time() and
g_time_val_add() can be used.
|
an EFlag |
|
a GTimeVal, determining the final time |
Returns : |
TRUE if flag is now set
|