執行緒中的訊號量
阿新 • • 發佈:2021-01-12
目錄
訊號量
建立初始化
#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
Link with -pthread.
入口:
sem
帶初始化的訊號量的地址pshared
執行緒-0 程序value
訊號的初始值 大於等於0即可
返回:
- 0-正常
- -1-非正常
P操作
#include <semaphore.h> int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); Link with -pthread.
sem_wait
功能:
- 減少訊號量的值,
- 如果當前訊號量值為0,呼叫時會阻塞,直到訊號量大於0
入口:
sem_t
訊號量
返回:
- 0-正常
- -1-非正常
V操作
函式原型:
#include <semaphore.h>
int sem_post(sem_t *sem);
Link with -pthread.
功能:
- 增加訊號量的值
入口:
sem
-訊號量
出口:
- 0-正常
- -1-非正常
銷燬
函式原型:
#include <semaphore.h> int sem_destroy(sem_t *sem); Link with -pthread.
功能:
- 銷燬一個訊號量
入口:
sem
-訊號量
出口:
-
0-正常
-
-1-非正常