GdaLockable

GdaLockable — Interface for locking objects in a multi threaded environment

Synopsis

                    GdaLockable;
void                gda_lockable_lock                   (GdaLockable *lockable);
gboolean            gda_lockable_trylock                (GdaLockable *lockable);
void                gda_lockable_unlock                 (GdaLockable *lockable);

Object Hierarchy

  GInterface
   +----GdaLockable

Prerequisites

GdaLockable requires GObject.

Known Implementations

GdaLockable is implemented by GdaSqlParser, GdaVconnectionDataModel, GdaConnection, GdaVirtualConnection and GdaVconnectionHub.

Description

Details

GdaLockable

typedef struct _GdaLockable GdaLockable;


gda_lockable_lock ()

void                gda_lockable_lock                   (GdaLockable *lockable);

Locks lockable. If it is already locked by another thread, the current thread will block until it is unlocked by the other thread.

This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.

Note: unlike g_mutex_lock(), this method recursive, which means a thread can lock lockable several times (and has to unlock it as many times to actually unlock it).

lockable :

a GdaLockable object.

gda_lockable_trylock ()

gboolean            gda_lockable_trylock                (GdaLockable *lockable);

Tries to lock lockable. If it is already locked by another thread, then it immediately returns FALSE, otherwise it locks lockable.

This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.

Note: unlike g_mutex_lock(), this method recursive, which means a thread can lock lockable several times (and has to unlock it as many times to actually unlock it).

lockable :

a GdaLockable object.

Returns :

TRUE if the object has successfully been locked.

gda_lockable_unlock ()

void                gda_lockable_unlock                 (GdaLockable *lockable);

Unlocks lockable. This method should not be called if the current does not already holds a lock on lockable (having used gda_lockable_lock() or gda_lockable_trylock()).

This function can be used even if g_thread_init() has not yet been called, and, in that case, will do nothing.

lockable :

a GdaLockable object.