c语言多线程条件变量
时间: 2023-12-07 20:39:22 浏览: 109
C++多线程中的锁和条件变量使用教程
5星 · 资源好评率100%
C语言多线程中的条件变量是一种线程间同步的机制,它可以让一个线程等待另一个线程满足某个条件后再继续执行。条件变量通常与互斥锁一起使用,以确保线程安全。
以下是一个简单的C语言多线程条件变量的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int count = 0;
void *thread_func(void *arg) {
pthread_mutex_lock(&mutex);
while (count < 10) {
printf("Thread %ld waiting...\n", (long)arg);
pthread_cond_wait(&cond, &mutex);
printf("Thread %ld awake!\n", (long)arg);
}
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
int main() {
pthread_t threads[3];
int i;
for (i = 0; i < 3; i++) {
pthread_create(&threads[i], NULL, thread_func, (void *)i);
}
pthread_mutex_lock(&mutex);
while (count < 10) {
count++;
printf("Main thread count = %d\n", count);
pthread_cond_signal(&cond);
}
pthread_mutex_unlock(&mutex);
for (i = 0; i < 3; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
```
这个例子创建了3个线程,每个线程都会等待条件变量`cond`,然后在主线程中通过`pthread_cond_signal`函数发送信号,唤醒等待的线程。当`count`变量的值达到10时,所有线程都会退出。
阅读全文