Я не мог найти, где ошибка в следующей программе для печати четных и нечетных н.у.к., используя два threads.Please предложитьC++ многопоточность
#include<iostream>
using namespace std;
pthread_mutex_t t1 = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER;
void* print_even(void*);
void* print_odd(void*);
static int data = 0;
int main()
{
pthread_t a[2];
pthread_create(&a[0],NULL,print_even,NULL);
pthread_create(&a[1],NULL,print_odd,NULL);
pthread_join(a[0],NULL);
pthread_join(a[1],NULL);
pthread_exit(NULL);
}
void* print_even(void* p)
{
do{
pthread_mutex_lock(&t1);
if(data%2 != 0)
{
pthread_cond_wait(&cond,&t1);
}
cout<<data;
data++;
pthread_cond_signal(&cond);
if(data > 10){
pthread_mutex_unlock(&t1);
break;
}
pthread_mutex_unlock(&t1);
}while(1);
}
void* print_odd(void* p)
{
do{
pthread_mutex_lock(&t1);
if(data%2 != 1)
{
pthread_cond_wait(&cond,&t1);
}
cout<<data;
}
data++;
pthread_cond_signal(&cond);
if(data > 10)
{
pthread_mutex_unlock(&t1);
break;
}
}while(1);
}
В чем проблема? – Eun