1. 程式人生 > 實用技巧 >執行緒中的訊號量

執行緒中的訊號量

首部

目錄

訊號量

建立初始化

       #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-非正常