extern "C"
{
#include<pthread.h>
}
#include<iostream>
using namespace std;
pthread_mutex_t mutex_var = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond_var= PTHREAD_COND_INITIALIZER;
int A;
void * read_input(void* a)
{
int t;
cout<<" reading .... using thread1 "<<endl;
for(;;)
{
pthread_mutex_lock(&mutex_var);
cout<<" input value of A "<<endl;
cin >> A;
cout<<" A---> VALUE Changed to inputed one"<<endl;
t=pthread_cond_signal(&cond_var);
if(t==0)
{
cout<<"logsss"<<endl;
}
pthread_mutex_unlock(&mutex_var);
// pthread_cond_signal(&cond_var);
if(A==10)
{
pthread_exit(NULL);
}
}
}
void * write_input(void * b)
{
cout<<" writing .... using thread2 "<<endl;
for(;;)
{
pthread_mutex_lock(&mutex_var);
pthread_cond_wait(&cond_var ,&mutex_var);
cout<< " value of (A)= "<<A <<endl;
pthread_mutex_unlock(&mutex_var);
if(A==10)
{
pthread_exit(NULL);
}
}
}
int main()
{
pthread_t r,w;
pthread_create(&w,NULL,&write_input,NULL);
pthread_create(&r,NULL,&read_input,NULL);
pthread_join(w,NULL);
pthread_join(r,NULL);
return 0;
}
здесь я пытаюсь прочитать вход, используя read_input, а затем распечатать это значение с помощью write_input ...нить: pthread_cond_signal() не дает контроль над другим потоком на ожидание состояния
, но это продолжается в read_input loop и не давая контроль над write_input ..., который должен возвращать управление мьютексом в write_input поток для печати значения. , пожалуйста, помогите ...
Это очень поможет, если вы объясните, что вы ожидаете от этого кода, потому что это не имеет большого смысла. Вы ожидаете, что поток 'write_input' будет записывать каждый вход? Если да, то не нужно, чтобы поток 'read_input' должен был дождаться завершения записи до того, как он прочитает следующий ввод? –