Привет!
Задача заключается в следующем. В некоторых случаях программа может запрашивать у пользователя ввести какую-то строку через терминал, которая будет ответом на заданный через терминал вопрос. Как правило данная проблема решается синхронным образом, просто блокирующим чтением строки из stdin. Тем не менее в моём случае возможны ситуации, в которых задавшая вопрос задача может быть отменена. В этом случае мы должны прекратить чтение из stdin.
Чтение можно "прекратить", например, если мы заведём отдельный тред, который будет блокирующим способом непрерывно читать строки из stdin, и просто рассылать их другим тредам(задачам), которые в свою очередь будут отменяемыми, и будут читать эти строки неблокирующим образом. Такое решение мне тоже не подходит, потому что у меня в программе могут быть другие процессы, которым может тоже понадобиться читать из stdin(например, escape-последовательности), а stdin будет всегда заблокирован.