编写 linux 下c语言条件变量的程序
时间: 2023-08-02 07:09:31 浏览: 149
linux环境下的c编程
下面是一个简单的 Linux 下 C 语言条件变量的程序示例:
```c
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 定义互斥锁
pthread_cond_t cond = PTHREAD_COND_INITIALIZER; // 定义条件变量
void *thread_func(void *arg) {
printf("子线程等待条件变量...\n");
pthread_mutex_lock(&mutex); // 加锁
pthread_cond_wait(&cond, &mutex); // 等待条件变量
printf("子线程收到条件变量信号,继续执行...\n");
pthread_mutex_unlock(&mutex); // 解锁
return NULL;
}
int main() {
pthread_t tid;
printf("主线程正在创建子线程...\n");
pthread_create(&tid, NULL, thread_func, NULL); // 创建子线程
sleep(1); // 睡眠 1 秒,等待子线程开始等待条件变量
printf("主线程正在发送条件变量信号...\n");
pthread_cond_signal(&cond); // 发送条件变量信号
pthread_join(tid, NULL); // 等待子线程结束
return 0;
}
```
以上程序中,主线程创建了一个子线程,子线程在等待条件变量的时候被阻塞了。主线程睡眠 1 秒后,发送了一个条件变量信号,子线程就可以继续执行了。注意在使用条件变量的时候需要先加锁,等待条件变量的时候会自动解锁,收到条件变量信号后需要再次加锁。
阅读全文