Linux 之 条件变量

Linux 之 条件变量

正文

pthread_cond_init函数
pthread_cond_destroy函数
pthread_cond_wait函数
pthread_cond_timedwait函数
pthread_cond_signal函数
pthread_cond_broadcast函数
以上6 个函数的返回值都是:成功返回0, 失败直接返回错误号。

pthread_cond_init

int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);
参数
cond: pthread_cond_t 类型的条件变量
attr: 属性,默认传NULL
也可以使用静态初始化:
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

pthread_cond_destroy

int pthread_cond_destroy(pthread_cond_t *cond);

pthread_cond_wait

int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);
参数:
cond:条件变量
mutex:互斥量
在第一次调用之前先给mutex上锁,调用pthread_cond_wait函数会将锁释放,并阻塞直到被唤醒,被唤醒后对mutex上锁成功后返回,否则阻塞直到上锁成功。

pthread_cond_timedwait

int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime);
参数
abstime:绝对时间
struct timespec {
time_t tv_sec; // seconds 秒
long tv_nsec; //nanosecondes 纳秒
}
阻塞超时后返回。

pthread_cond_signal

int pthread_cond_signal(pthread_cond_t *cond);
唤醒至少一个条件变量。

pthread_cond_broadcast

int pthread_cond_broadcast(pthread_cond_t *cond);
唤醒全部的条件变量。

条件变量实现生产者消费者模型

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/types.h>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值