Многопоток

Поддержка
  • Здравствуйте такой вопрос. Есть скрипт, он выполняет несколько действий в 1 поток а затем вызывается функция в многопотоке (скажем 20). В многопотоке, если выполняется условие, необходимо сделать так, чтобы вызывалась другая функция, НО она работала в 1 потоке только. То есть если одновременно из 2-3 и больше потоков идёт обращение к функции, она выполнялась сначала для одного, потом для второго и так далее по очереди. Именно по очереди. Возможно такое реализовать и как? Заранее спасибо.

  • @elger said in Многопоток:

    Здравствуйте такой вопрос. Есть скрипт, он выполняет несколько действий в 1 поток а затем вызывается функция в многопотоке (скажем 20). В многопотоке, если выполняется условие, необходимо сделать так, чтобы вызывалась другая функция, НО она работала в 1 потоке только. То есть если одновременно из 2-3 и больше потоков идёт обращение к функции, она выполнялась сначала для одного, потом для второго и так далее по очереди. Именно по очереди. Возможно такое реализовать и как? Заранее спасибо.

    Создайте блок функции через глобальную переменную

  • @fox Что-то я слабо представляю как это будет происходить. Можете минимально разъяснить как будет это всё работать?

  • @elger said in Многопоток:

    @fox Что-то я слабо представляю как это будет происходить. Можете минимально разъяснить как будет это всё работать?

    Я в свою очередь, слабо представляю для чего все эти костыли :D

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

  • @fox Хорошо, попробую. Спасибо за ответ.