线程3——信号量
创建信号量,并赋予初值 int sem_init(sem_t *sem, int pshared, unsigned int value); 销毁信号量 int sem_destroy(sem_t *sem); 阻塞,信号量数值-1 int sem_wait(sem_t *sem); 非阻塞申请 int sem_trywait(sem_t *sem); 计时申请一个信号量 int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); 发送信号量,数值 +1 int sem_post(sem_t *sem); 获取信号量值 int sem_getvalue(sem_t *sem, int *sval); 示例:和互斥锁案例相同 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <semaphore.h> 5 6 7 void* task1(void *arg); 8 void* task2(void *arg); 9 void* task3(void *arg); 10 11 static int i = 10 ; 12 static sem_t sem; //信号量指针 13 14 15 int main