Low-level Functions

Eina offers low-level functions that are portable across the operating system, such as locks, conditions, semaphores, barriers, and spinlocks. The functions follow closely the logic of pthreads.

While these functions are useful, they are building blocks and not usually useful in EFL applications considering the higher-level functions that are available in Ecore.

For an introduction to threads and pthreads in particular, see:

If you are already familiar with threads, see the standard pthreads documentation and the Eina reference documentation, or the following function lists. Remember that the Eina functions map very closely to the pthreads functions.

Lock (mutual exclusions)
pthreads function eina equivalent
pthread_mutex_new()eina_lock_new()
pthread_mutex_destroy()eina_lock_free()
pthread_mutex_lock()eina_lock_take()
pthread_mutex_trylock()eina_lock_take_try()
pthread_mutex_unlock()eina_lock_release()
none (prints debug information on the lock)eina_lock_debug()
Conditions (notifications when condition objects change)
pthreads function eina equivalent
pthread_cond_init() eina_condition_new()
pthread_cond_destroy eina_condition_free()
pthread_cond_wait() eina_condition_wait()
pthread_cond_timedwait() eina_condition_timedwait()
pthread_cond_broadcast() eina_condition_broadcast()
pthread_cond_signal() eina_condition_signal()
RWLocks (Read-write locks, for multiple-readers/single-writer scenarios)
pthreads function eina equivalent
pthread_rwlock_init() eina_rwlock_new()
pthread_rwlock_destroy() eina_rwlock_free()
pthread_rwlock_rwlock_rdlock()eina_rwlock_take_read()
pthread_rwlock_rwlock_wrlock()eina_rwlock_take_write()
pthread_rwlock_unlock() eina_rwlock_release()
TLS (Thread-Local Storage)
pthreads function eina equivalent
pthread_key_create() eina_tls_new()
pthread_key_delete() eina_tls_free()
pthread_getspecific() eina_tls_get()
pthread_setspecific() eina_tls_set()
Semaphores (access restrictions for a set of resources)
pthreads function eina equivalent
sem_init() eina_semaphore_new()
sem_destroy() eina_semaphore_free()
sem_wait() eina_semaphore_lock()
sem_post() eina_semaphore_release()
Barriers
pthreads function eina equivalent
pthread_barrier_init() eina_barrier_new()
pthread_barrier_destroy()eina_barrier_free()
pthread_barrier_wait() eina_barrier_wait()