1. 程式人生 > 實用技巧 >執行緒中的條件變數

執行緒中的條件變數

首部

目錄

執行緒中的條件變數

建立並初始化

       #include <pthread.h>
       int pthread_cond_init(pthread_cond_t *restrict cond,
           const pthread_condattr_t *restrict attr);
       pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

功能:

  • 建立初始化條件變數

pthread_cond_init -動態初始化

PTHREAD_COND_INITIALIZER

-靜態初始化

入口:

  • cond-帶初始化條件的地址
  • attr-帶初始化條件的屬性

出口:

  • 0-正常
  • 錯誤碼-非正常

休眠等待

       #include <pthread.h>

       int pthread_cond_wait(pthread_cond_t *restrict cond,
           pthread_mutex_t *restrict mutex);

功能:

  • 條件不滿足休眠-釋放互斥鎖
  • 喚醒->檢測條件(手動檢測)->阻塞拿鎖 or 休眠

入口:

  • cond-條件變數
  • mutex-互斥鎖

出口:

  • 0-正常
  • 錯誤碼-非正常

通知喚醒

       #include <pthread.h>

       int pthread_cond_signal(pthread_cond_t *cond);

功能:

  • 喚醒一個條件變數下的執行緒
  • 多個變數( int pthread_cond_broadcast(pthread_cond_t *cond);

入口:

  • cond-條件變數

出口:

  • 0-正常
  • 錯誤碼-非正常

銷燬

       #include <pthread.h>

       int pthread_cond_destroy(pthread_cond_t *cond);

功能:

  • 銷燬條件變數

入口:

  • cond-條件變數

出口:

  • 0-正常
  • 錯誤碼-非正常