Typedefs | Enumerations | Functions
Thread

Abstracts platform threads, providing an uniform API. More...

Typedefs

typedef uintptr_t Eina_Thread
 Type for a generic thread.
 
typedef void *(* Eina_Thread_Cb) (void *data, Eina_Thread t)
 Type for the definition of a thread callback function.
 
typedef enum _Eina_Thread_Priority Eina_Thread_Priority
 

Enumerations

enum  _Eina_Thread_Priority {
  EINA_THREAD_URGENT,
  EINA_THREAD_NORMAL,
  EINA_THREAD_BACKGROUND,
  EINA_THREAD_IDLE
}
 

Functions

Eina_Thread eina_thread_self (void)
 Return identifier of the current thread. More...
 
Eina_Bool eina_thread_equal (Eina_Thread t1, Eina_Thread t2)
 Check if two thread identifiers are the same. More...
 
Eina_Bool eina_thread_create (Eina_Thread *t, Eina_Thread_Priority prio, int affinity, Eina_Thread_Cb func, const void *data)
 Create a new thread, setting its priority and affinity. More...
 
void * eina_thread_join (Eina_Thread t)
 Join a currently running thread, waiting until it finishes. More...
 
Eina_Bool eina_thread_name_set (Eina_Thread t, const char *name)
 Set the name of a given thread for debugging purposes. More...
 

Detailed Description

Abstracts platform threads, providing an uniform API.

It's modeled after POSIX THREADS (pthreads), on Linux they are almost 1:1 mapping.

See also
Lock for mutex/locking abstraction.
Since
1.8

Function Documentation

§ eina_thread_self()

Eina_Thread eina_thread_self ( void  )

Return identifier of the current thread.

Returns
identifier of current thread.
Since
1.8

Referenced by efl::eina::swap().

§ eina_thread_equal()

Eina_Bool eina_thread_equal ( Eina_Thread  t1,
Eina_Thread  t2 
)

Check if two thread identifiers are the same.

Parameters
t1first thread identifier to compare.
t2second thread identifier to compare.
Returns
EINA_TRUE if they are equal, EINA_FALSE otherwise.
Since
1.8

§ eina_thread_create()

Eina_Bool eina_thread_create ( Eina_Thread t,
Eina_Thread_Priority  prio,
int  affinity,
Eina_Thread_Cb  func,
const void *  data 
)

Create a new thread, setting its priority and affinity.

Parameters
t[out]where to return the thread identifier. Must not be NULL.
priothread priority to use, usually #EINA_THREAD_BACKGROUND
affinitythread affinity to use. To not set affinity use -1.
funcfunction to run in the thread. Must not be NULL.
datacontext data to provide to func as first argument.
Returns
EINA_TRUE if thread was created, EINA_FALSE on errors.
Since
1.8

Referenced by efl::eina::thread::thread().

§ eina_thread_join()

void* eina_thread_join ( Eina_Thread  t)

Join a currently running thread, waiting until it finishes.

This function will block the current thread until t finishes. The returned value is the one returned by t func() and may be NULL on errors. See Error to identify problems.

Parameters
tthread identifier to wait.
Returns
value returned by t creation function func() or NULL on errors. Check error with Error.
Since
1.8

Referenced by efl::eina::thread::join().

§ eina_thread_name_set()

Eina_Bool eina_thread_name_set ( Eina_Thread  t,
const char *  name 
)

Set the name of a given thread for debugging purposes.

This maps to the pthread_setname_np() GNU extension or similar if available. The name may be limited in size (possibly 16 characters including the nul byte terminator). This is useful for debugging to name a thread so external tools can display a meaningful name attached to the thread.

Parameters
tthread to set the name of
namea string to name the thread - this cannot be NULL
Returns
EINA_TRUE if it succeeds in setting the name or EINA_FALSE otherwise.
Since
1.16

References EINA_FALSE, and EINA_TRUE.