Передать в ручное управление на n секунд?

Поддержка
  • @Gryner said in Передать в ручное управление на n секунд?:

    У тебя же что то предусмотрено на тот случай, если пользователь ничего не делал и скрипт сам продолжился?
    И да, в однопотоке это реально, в многопотоке проблемно.

    Читаю про "ожидание ввода пользователя"

    
     Это действие **не имеет ограничений по времени и продлится до тех пор, пока пользователь ничего не введет.**
     
    
  • @kuzkuz если ничего не ввести, асинхронная функция останется висеть в ожидании. Основной скрипт прождав какое то время пойдет дальше.

  • И если ассинхронная функция не получила результат, после выхода их цикла ожидания ее можно просто прервать.

  • @Gryner said in Передать в ручное управление на n секунд?:

    @kuzkuz если ничего не ввести, асинхронная функция останется висеть в ожидании. Основной скрипт прождав какое то время пойдет дальше.

    Прикольно. В принципе даже получилось для одного потока +- сделать наброски.
    Сейчас затык с тем, как быть в многопотоке. Как сделать так чтобы в нужный поток вернулись введенные данные а не куда попало. Вижу что при вызове функции асинхронно есть THREAD_ID, но куда чего как пока не понимаю

  • @kuzkuz нужно сделать не просто ожидание изменения глобальной переменной переменной, а получить результат ассинхронной функции с тем же THREAD_ID. Результатом может быть как раз тот же введенный результат. Для многопотока это будет правильнее. а вот чтобы пользователь понял ,для какого потока он водит данные, то через глобальную переменную передать в ассинхронную функцию номер потока например и при запросе ввода указать этот поток.

  • @Gryner said in Передать в ручное управление на n секунд?:

    @kuzkuz нужно сделать не просто ожидание изменения глобальной переменной переменной, а получить результат ассинхронной функции с тем же THREAD_ID. Результатом может быть как раз тот же введенный результат. Для многопотока это будет правильнее. а вот чтобы пользователь понял ,для какого потока он водит данные, то через глобальную переменную передать в ассинхронную функцию номер потока например и при запросе ввода указать этот поток.

    ЛОГИЧНО! Но мне пока не понятно как это сделать.

    1. Да, нужно пользователю явно показать для какого потока он вводит данные
    2. Если бы можно было создавать глобальный массив где ячейка это номер потока , а значение это то что ввели было бы супер! Вот поэтому пока и не понимаю. В тоже время не сделать глобальную переменную типа
      INPUT_1
      INPUT_4
      INPUT_7
      т.е. так бы было явно понятно что значения для потоков 1,4,7 соответственно.
      Видимо надо искать примеры реализаций (=
  • This post is deleted!
  • 1 Перед открытием ассинхронной функции номер потока передать в глобальную переменную. В ассинхронной функции получить эту глобальную переменную и сразу перевести в локальную, чтобы избежать конфликта с другими потоками. В тексте, который показывается юзеру указать эту локальную переменную . пользователь вводит данные, фукция завершается и передает результат. В основном скрипте цикл ожидания

  • примерно так тест.xml

  • @Gryner said in Передать в ручное управление на n секунд?:

    1 Перед открытием ассинхронной функции номер потока передать в глобальную переменную. В ассинхронной функции получить эту глобальную переменную и сразу перевести в локальную, чтобы избежать конфликта с другими потоками. В тексте, который показывается юзеру указать эту локальную переменную . пользователь вводит данные, фукция завершается и передает результат. В основном скрипте цикл ожидания

    Огромное спасибо! Премного благодарен! Не знал, что есть такой функционал!!!

  • 0 Votes
    14 Posts
    991 Views
  • 1 Votes
    53 Posts
    5012 Views
  • 0 Votes
    16 Posts
    1328 Views
  • 0 Votes
    15 Posts
    1513 Views
  • 0 Votes
    3 Posts
    537 Views