Код ниже создает два потока. Один, чтобы принять ввод и другой, чтобы распечатать текст одновременно. Из того, что я прочитал в этой теме, глобальные переменные считаются плохой формой в традиционном коде c ++. Тем не менее, я не могу придумать, как сделать ввод / вывод одновременно без них.
Как я могу исключить эти две логические глобальные переменные из моего кода?
bool input_done = 1;
bool output_done = 1;
void* input(void* ptr)
{
char msg[256];
cin.getline(msg,256);
cout << msg << endl;
input_done = 1;
pthread_exit(NULL);
}
void* output(void* ptr)
{
cout << "Hello World" << endl;
for(long int x=0;x<1000000000;x++) {}
output_done = 1;
pthread_exit(NULL);
}
int main()
{
while(1)
{
pthread_t t1,t2;
if (input_done)
{
pthread_create(&t1,NULL,input,NULL);
input_done = 0;
}
if (output_done)
{
pthread_create(&t2,NULL,output,NULL);
output_done = 0;
}
}
}