代码:
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h> //getopt_long()头文件位置
#include <string.h>
#include <unistd.h>
#include <syslog.h>
#include <pthread.h>
void *thread1_function(void *arg);
void *thread2_function(void *arg);
pthread_mutex_t mutex;
pthread_cond_t cond;
int g_value = 0;
int main(int argc, char *argv[])
{
int rc1,rc2;
char *str1="wenhaoll";
char *str2="linglong";
pthread_t thread1,thread2;
pthread_mutex_init(&mutex,NULL);
pthread_cond_init(&cond,NULL);
if((rc1 = pthread_create(&thread1,NULL,thread1_function,str1)))
{
fprintf(stdout,"thread 1 create failed: %d\n",rc1);
}
if((rc2 = pthread_create(&thread2,NULL,thread2_function,str2)))
{
fprintf(stdout,"thread 2 create failed: %d\n",rc2);
}
pthread_join(thread1,NULL);
pthread_join(thread2,NULL);
return 0;
}
void *thread1_function(void *arg)
{
pthread_cond_wait(&cond, &mutex);
char i;
for (i=0; i<9; i++)
{
pthread_mutex_lock(&mutex);
g_value ++;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
sleep(2);
}
return NULL;
}
void *thread2_function(void *arg)
{
char i;
for (i=0; i<9; i++)
{
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
printf("g_value is: %d\n", g_value);
pthread_mutex_unlock(&mutex);
}
return NULL;
}
本文通过一个具体的C语言程序示例介绍了如何使用pthread库中的互斥锁和条件变量来实现多线程间的同步。两个线程分别递增全局变量并打印其值,通过互斥锁保护共享资源,条件变量用于线程间通信。

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



