В программе, которую я пишу, у меня есть основной поток, который содержит цикл для принятия ввода с консоли.Однако в какой-то момент создается новый поток, который также пытается читать из стандартного ввода.Существует переменная, которая указывает, что этот другой поток запущен, но fgets все еще ожидает ввода в основном потоке, поэтому первый ввод с консоли, введенный после того, как начался новый поток, ошибочно читается основным потоком, а не новым потоком.
Есть ли способ решить эту проблему?
Одна вещь, которую я попробовал, (в основном потоке):
while(foo) {
if(busy) continue;
fgets(input,200,stdin);
if(busy) {
fputs(input,stdin);
} else {
// do whatever was supposed to be done with input intended for main thread
}
}
Но у меня, похоже, неправильное понимание того, как работают потоки, потому что другой вызов fgets не читает записанные данныечерез fputs.