线程互斥和条件同步,pthread_mutex和pthread_cond

来源:互联网 发布:怎么区分淘宝是否正品 编辑:程序博客网 时间:2024/06/08 06:09
线程互斥和条件同步,pthread_mutex和pthread_cond

#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[]){    pthread_t thread1,thread2;    pthread_mutex_init(&mutex,NULL);    pthread_cond_init(&cond,NULL);    if(pthread_create(&thread1,NULL,thread1_function,NULL))    {        fprintf(stdout,"thread 1 create failed\n");    }     if(pthread_create(&thread2,NULL,thread2_function,NULL))    {        fprintf(stdout,"thread 2 create failed\n");    }     pthread_join(thread1,NULL);    pthread_join(thread2,NULL);    return 0;}void *thread1_function(void *arg){   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;}


0 0