EFlag

## EFlag EFlag |

## Synopsis

                        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_wait_until                   (EFlag *flag,
                                                             gint64 end_time);
    void                e_flag_free                         (EFlag *flag);

    gboolean            e_flag_timed_wait                   (EFlag *flag,
                                                             GTimeVal *abs_time);

## Description

## Details

### EFlag

    typedef struct _EFlag EFlag;

Contains only private data that should be read and manipulated using the functions below.

Since 1.12

### e_flag_new ()

    EFlag *             e_flag_new                          (void);

Creates a new EFlag object. It is initially unset.

Returns : | a new EFlag

Since 1.12

### e_flag_is_set ()

    gboolean            e_flag_is_set                       (EFlag *flag);

Returns the state of `flag`.

`flag` : | an EFlag
Returns : | `TRUE` if `flag` is set

Since 1.12

### e_flag_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_wait_until()` once `flag` is set will not block at all.

`flag` : | an EFlag

Since 1.12

### e_flag_clear ()

    void                e_flag_clear                        (EFlag *flag);

Unsets `flag`. Subsequent calls to `e_flag_wait()` or `e_flag_wait_until()` will block until `flag` is set.

`flag` : | an EFlag

Since 1.12

### e_flag_wait ()

    void                e_flag_wait                         (EFlag *flag);

Blocks until `flag` is set. If `flag` is already set, the function returns immediately.

`flag` : | an EFlag

Since 1.12

### e_flag_wait_until ()

    gboolean            e_flag_wait_until                   (EFlag *flag,
                                                             gint64 end_time);

Blocks until `flag` is set, or until the time specified by `end_time`. If `flag` is already set, the function returns immediately. The return value indicates the state of `flag` after waiting.

To easily calculate `end_time`, a combination of `g_get_monotonic_time()` and G_TIME_SPAN_SECOND macro.

`flag` : | an EFlag
`end_time` : | the monotonic time to wait until
Returns : | `TRUE` if `flag` is now set

Since 3.8

### e_flag_free ()

    void                e_flag_free                         (EFlag *flag);

Destroys `flag`.

`flag` : | an EFlag

Since 1.12

### e_flag_timed_wait ()

    gboolean            e_flag_timed_wait                   (EFlag *flag,
                                                             GTimeVal *abs_time);

### Warning

`e_flag_timed_wait` has been deprecated since version 3.8 and should not be used in newly-written code. Use `e_flag_wait_until()` instead.

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.

`flag` : | an EFlag
`abs_time` : | a GTimeVal, determining the final time
Returns : | `TRUE` if `flag` is now set

Since 1.12