Многопоток



  • Здравствуйте такой вопрос. Есть скрипт, он выполняет несколько действий в 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 Хорошо, попробую. Спасибо за ответ.


Log in to reply
 

  • 8
  • 2
  • 3
  • 10
  • 15
  • 7
  • 5
  • 35