Loading

线程中的条件变量

首部

线程中的条件变量

创建并初始化

       #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-正常
  • 错误码-非正常
posted @ 2021-01-12 13:41  流缘飞雨  阅读(81)  评论(0)    收藏  举报