------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
pthread_mutex_t count_lock;
pthread_cond_t count_nonzero;
unsigned count;
void *decrement_count(void *arg)
{
pthread_mutex_lock(&count_lock);
while (count == 0)
pthread_cond_wait(&count_nonzero, &count_lock);
count = count - 1;
printf("LINE:%d %d/n", __LINE__, count);
pthread_mutex_unlock(&count_lock);
pthread_exit(NULL);
}
void *increment_count(void *arg)
{
pthread_mutex_lock(&count_lock);
if (count == 0)
pthread_cond_signal(&count_nonzero);
count = count + 1;
printf("LINE:%d %d/n", __LINE__, count);
sleep(2);
pthread_mutex_unlock(&count_lock);
pthread_exit(NULL);
}
int main()
{
pthread_t id1;
pthread_mutex_init(&count_lock, NULL);
pthread_cond_init(&count_nonzero, NULL);
pthread_create(&id1, NULL, decrement_count, NULL);
increment_count(NULL);
pthread_join(id1, NULL);
return 0;
}
本文介绍了一个使用Linux下的互斥锁和条件变量实现线程间同步的例子。通过两个线程分别进行计数器的递增和递减操作,展示了如何利用互斥锁确保线程安全,并利用条件变量协调线程间的等待与唤醒。
916

被折叠的 条评论
为什么被折叠?



