pthread_cond_timedwait
是 pthread
库中用于等待条件变量的函数之一,它和 pthread_cond_wait
类似,都是用于等待某个条件变量。然而,pthread_cond_timedwait
允许线程等待一定的时间,如果在指定时间内没有收到信号,它会超时返回,从而避免线程无限期地阻塞。
pthread_cond_wait 示例
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 10
int buffer[BUFFER_SIZE];
int count = 0; // 当前缓冲区中的项目数
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond_producer = PTHREAD_COND_INITIALIZER;
pthread_cond_t cond_consumer = PTHREAD_COND_INITIALIZER;
void* producer(void* arg) {
while (1) {
pthread_mutex_lock(&mutex);
// 如果缓冲区满,等待消费者消费
while (count == BUFFER_SIZE) {
pthread_cond_wait(&cond_producer, &mutex);
}
// 生产一个项目
buffer[count++] = rand() % 100;