Разрыв цикла в OpenMP с входом - PullRequest
       7

Разрыв цикла в OpenMP с входом

0 голосов
/ 26 октября 2018

Я проверил несколько вопросов и ответов тут и там ( пример ), и я не могу найти решение или подход к тому, что я ищу.

У меня естьпрограмма, которая, как только она запускается, никогда не остановится, если пользователь не введет что-либо еще.

Так что потоки идут и делают какое-то исчисление, и оно никогда не останавливается (я хочу, чтобы так было).

Но я хочу иметь возможность остановить его, как только пользователь что-то введет, а затем показать окончательные результаты (это не сложно).

Поэтому мой главный вопрос: есть лиспособ прослушивания ввода в то время, когда программа запущена и показывает процесс?(Представьте, что числа идут 1: 1 (1,2,3,4,5), печатаются и одновременно могут вводить любое значение.)

(То, что я думал, этов #pragma omp parallel for используется общая переменная (флаг) и if внутри цикла, поэтому, как только флаг станет true или false, break;.)

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете остановить свою программу, поделившись глобальным флагом.Давайте назовем это should_stop.

По умолчанию установлено значение false.

Затем, после каждого цикла вычислений (я предполагаю, что где-то есть основной цикл; тот же шаблон работает длязадач), в вашей основной ветке, проверьте состояние клавиатуры.Если есть доступный символ (убедитесь, что вы не используете блокирующий вызов. Просто опросите буфер вместо этого), установите флаг.

Затем во всех потоках, после того как они завершат свой текущий шаг, проверьте состояниефлага, и если он установлен, завершите вычисление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...