VLC 4.0.0-dev
|
The semaphore is the simplest thread synchronization primitive, consisting of a simple counter. More...
Data Structures | |
struct | vlc_sem_t |
Semaphore. More... | |
Functions | |
void | vlc_sem_init (vlc_sem_t *sem, unsigned count) |
Initializes a semaphore. | |
int | vlc_sem_post (vlc_sem_t *) |
Increments the value of a semaphore. | |
void | vlc_sem_wait (vlc_sem_t *) |
Waits on a semaphore. | |
int | vlc_sem_trywait (vlc_sem_t *sem) |
Tries to decrement a semaphore. | |
int | vlc_sem_timedwait (vlc_sem_t *sem, vlc_tick_t deadline) |
Waits on a semaphore within a deadline. | |
The semaphore is the simplest thread synchronization primitive, consisting of a simple counter.
See also POSIX sem_t
.
void vlc_sem_init | ( | vlc_sem_t * | sem, |
unsigned | count | ||
) |
Initializes a semaphore.
sem | a semaphore to initialize |
count | initial semaphore value (typically 0) |
References vlc_sem_t::value, and vlc_cond_waiter::value.
Referenced by vlc::threads::semaphore::semaphore(), vlc::threads::semaphore::semaphore(), TaskNew(), TsStart(), vlc_getaddrinfo_i11e(), and vlc_mta_acquire().
int vlc_sem_post | ( | vlc_sem_t * | sem | ) |
Increments the value of a semaphore.
References unlikely, vlc_sem_t::value, and vlc_atomic_notify_one().
Referenced by Interrupt(), MtaMainLoop(), on_thumbnailer_input_event(), OnParserEnded(), vlc::threads::semaphore::post(), TsStop(), vlc_gai_thread(), vlc_getaddrinfo_notify(), vlc_interrupt_sem(), and vlc_mta_release().
int vlc_sem_timedwait | ( | vlc_sem_t * | sem, |
vlc_tick_t | deadline | ||
) |
Waits on a semaphore within a deadline.
This function waits for the semaphore just like vlc_sem_wait(), but only up to a given deadline.
sem | semaphore to wait for |
deadline | deadline to wait until |
0 | the semaphore was decremented |
ETIMEDOUT | the deadline was reached |
References likely, vlc_sem_t::value, and vlc_atomic_timedwait().
Referenced by Parse(), ThumbnailerRun(), and TsRun().
int vlc_sem_trywait | ( | vlc_sem_t * | sem | ) |
Tries to decrement a semaphore.
This function decrements the semaphore if its value is not zero.
sem | semaphore to decrement |
0 | the semaphore was decremented |
EAGAIN | the semaphore was zero and could not be decremented |
References vlc_sem_t::value.
Referenced by TsRun().
void vlc_sem_wait | ( | vlc_sem_t * | sem | ) |
Waits on a semaphore.
This function atomically waits for the semaphore to become non-zero then decrements it, and returns. If the semaphore is non-zero on entry, it is immediately decremented.
References likely, vlc_sem_t::value, and vlc_atomic_wait().
Referenced by MtaMainLoop(), Parse(), ThumbnailerRun(), vlc_getaddrinfo_i11e(), vlc_mta_acquire(), vlc_sem_wait_i11e(), and vlc::threads::semaphore::wait().