Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/sem_init.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/sem_init.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/sem_init.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/sem_init.html on line 8
Initialize a semaphore
#include <semaphore.h>
int sem_init( sem_t * sem,
int pshared,
unsigned value );
- sem
- A pointer to the sem_t object for the semaphore that
you want to initialize.
- pshared
- Nonzero if you want the semaphore to be shared between processes via
shared memory.
- value
- The initial value of the semaphore.
A positive value (i.e. greater than zero) indicates an unlocked
semaphore, and a value of 0 (zero) indicates a locked semaphore.
This value must not exceed SEM_VALUE_MAX.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The sem_init() function initializes the unnamed semaphore
referred to by the sem argument. The initial counter value of
this semaphore is specified by the value argument.
|
You should allocate synchronization objects only in normal memory mappings.
On certain processors (e.g. some PPC ones), atomic operations such as calls to
pthread_mutex_lock()
will cause a fault if the control structure is allocated in uncached memory. |
You can use the initialized semaphore in subsequent calls to
sem_wait(),
sem_trywait(),
sem_post(),
and
sem_destroy().
An initialized semaphore is valid until it's
destroyed by the sem_destroy() function, or until the memory where
the semaphore resides is released.
If the pshared argument is nonzero, then the semaphore can be
shared between processes via shared memory. Any process can then use
sem with the sem_wait(), sem_trywait(),
sem_post() and sem_destroy() functions.
|
Don't mix named semaphore operations
(sem_open()
and
sem_close())
with unnamed semaphore operations (sem_init() and
sem_destroy()) on the same semaphore. |
- 0
- Success. The semaphore referred to by sem is initialized.
- -1
- An error occurred (errno is set).
- EAGAIN
- A resource required to initialize the semaphore has been exhausted.
- EBUSY
- The given semaphore was previously initialized, and has not been destroyed.
- EINVAL
- The value argument exceeds SEM_VALUE_MAX.
- EPERM
- The process lacks the appropriate privileges to
initialize the semaphore.
- ENOSPC
- A resource required to initialize the semaphore has been exhausted.
- ENOSYS
- The sem_init() function isn't supported.
POSIX 1003.1 SEM
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
No |
Thread |
Yes |
Don't initialize the same semaphore from more than one
thread. It's best to set up semaphores before starting any threads.
errno,
sem_destroy(),
sem_post(),
sem_trywait(),
sem_wait()
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/sem_init.html on line 219
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/sem_init.html on line 219