_getch() пропускает некоторые входные данные в многопоточной программе

Я использую _getch() в одном потоке своей многопоточной консольной программы Windows, созданной с помощью Visual C++. Если я нажму немного быстрее, _getch() пропустит некоторые вводы. Например, я ввожу строку "hello", ошибка _getch() получает символы 'h', 'l', 'l', 'o'. Он пропустил 'e'. Если я нажму немного медленнее, он получит все символы. Всего есть 6 потоков со сторонней библиотекой.

Если я не использую стороннюю библиотеку, есть 3 потока. Все работает нормально.

Так есть ли вероятность того, что сторонний код изменяет атрибут консоли, который приводит к проблеме?


person Yorkwar    schedule 18.12.2015    source источник
comment
Я забыл сказать, что _getch() находится в цикле, чтобы получить несколько входных данных.   -  person Yorkwar    schedule 18.12.2015
comment
Какой язык программирования?   -  person Ulrich Eckhardt    schedule 18.12.2015
comment
@Ульрих Экхардт С++. И я хочу ввод сразу, а не ENTER.   -  person Yorkwar    schedule 18.12.2015
comment
Отредактируйте свой вопрос вместо добавления комментариев. Кроме того, в нынешнем виде это не по теме, потому что инструкции по воспроизведению поведения отсутствуют. Пожалуйста, ознакомьтесь с правилами публикации.   -  person Ulrich Eckhardt    schedule 18.12.2015


Ответы (1)


Оказывается, сторонняя библиотека в другом потоке крадет ввод с клавиатуры.

person Yorkwar    schedule 22.12.2015