Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

sem_post(3) [netbsd man page]

SEM_POST(3)						   BSD Library Functions Manual 					       SEM_POST(3)

sem_post -- increment (unlock) a semaphore LIBRARY
POSIX Real-time Library (librt, -lrt) SYNOPSIS
#include <semaphore.h> int sem_post(sem_t *sem); DESCRIPTION
The sem_post() function increments (unlocks) the semaphore pointed to by sem. If there are threads blocked on the semaphore when sem_post() is called, then the highest priority thread that has been blocked the longest on the semaphore will be allowed to return from sem_wait(). sem_post() is signal-reentrant and may be called within signal handlers. RETURN VALUES
The sem_post() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indi- cate the error. ERRORS
sem_post() will fail if: [EINVAL] sem points to an invalid semaphore. SEE ALSO
sem_trywait(3), sem_wait(3) STANDARDS
sem_post() conforms to ISO/IEC 9945-1:1996 (``POSIX.1''). BSD
January 22, 2003 BSD

Check Out this Related Man Page

sem_post(3)						     Library Functions Manual						       sem_post(3)

sem_post - Unlocks a semaphore (P1003.1b) LIBRARY
Realtime Library (, librt.a) SYNOPSIS
#include <semaphore.h> int sem_post ( sem_t *sem); PARAMETERS
sem Pointer to the semaphore to be unlocked. DESCRIPTION
The sem_post function unlocks the specified semaphore by performing the semaphore unlock operation on that semaphore. The appropriate func- tion (sem_open for named semaphores or sem_init for unnamed semaphores) must be called for a semaphore before you can call the locking and unlocking functions, sem_wait, sem_trywait, and sem_post. If the semaphore value after a sem_post function is positive, no processes were blocked waiting for the semaphore to be unlocked; the sema- phore value is incremented. If the semaphore value after a sem_post function is zero, one of the processes blocked waiting for the sema- phore is allowed to return successfully from its call to sem_wait. If more than one process is blocked while waiting for the semaphore, only one process is unblocked and the state of the semaphore remains unchanged when the sem_post function returns. The process to be unblocked is selected according to the scheduling policies and priorities of all blocked processes. If the scheduling policy is SCHED_FIFO or SCHED_RR, the highest-priority waiting process is unblocked. If more than one process of that priority is blocked, then the process that has waited the longest is unblocked. The sem_post function can be called from a signal-catching function. RETURN VALUES
On successful completion, the sem_post function returns the value 0 (zero) and performs a semaphore unlock operation, unblocking a process. Otherwise, the function returns the value -1 and sets errno to indicate the error. The state of the semaphore remains unchanged. ERRORS
The sem_post function fails under the following condition: [EINVAL] The sem does not refer to a valid semaphore. RELATED INFORMATION
Functions: sem_trywait(3), sem_wait(3) Guide to Realtime Programming delim off sem_post(3)
Man Page

3 More Discussions You Might Find Interesting

1. Programming

sem_wait, sem_post confusion?

Hi friends, I have written this small program using the concept of semaphores. I am a bit confused, hope u can help me with it. The idea is that 1. Two threads are created 2. First will be displaying 0(zero) on the screen 3. Second will be displaing 1(one) on the screen 4. This process... (2 Replies)
Discussion started by: gabam
2 Replies

2. Programming

Undefined: sem_init, sem_post, sem_wait

Hi friends, I am using semaphores in my program, but when I compile the program, it gives the following error $ gcc sem.c -o sem -lpthread Undefined first referenced symbol in file sem_init ... (1 Reply)
Discussion started by: gabam
1 Replies

3. Homework & Coursework Questions

Semaphores sem_wait sem_post problem

hallo! if there are many processes running and I initialize the semaphore like this: my_sem = sem_open(SEM_NAME, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, 10); (the last argument is 10) and then i use sem_wait(my_sem); sleep(5); sem_post; Will 10 processes be able to access the... (1 Reply)
Discussion started by: whatevernever
1 Replies