Как запускать потоки поочереди? а не все сразу

Поддержка
  • @support Огромное человеческое спасибо! Это великий труд с Вашей стороны!
    Неправильный ход моей мысли при использовании BAS - это моя проблема - просто реально прилагая усилия - хочется научиться понимать алгоритмы использования действий - примеров маловато(. Спасибо еще раз...

  • Подскажите как модифицировать предложенное решение, чтобы потоки не по 1-му стартовали по очереди, а партиями например по 20 штук(для примера число ядер процессора). Т.е. стартовали 20 потом через 30 секунд еще 20(к этому моменту 40 работают), потом еще через 30 секунд еще 20.

  • @Basak298 Самое простое, это в начале скрипта определять номер потока, а затем

    if
       [[THREAD_INDEX]] > 20 && [[THREAD_INDEX]] < 40
          sleep 30000
    if
       [[THREAD_INDEX]] > 40 && [[THREAD_INDEX]] < 60
          sleep 60000
    if
       [[THREAD_INDEX]] > 60 && [[THREAD_INDEX]] < 80
          sleep 90000
    if
       [[THREAD_INDEX]] > 80 && [[THREAD_INDEX]] < 100
          sleep 120000
    
  • @Fox определил номер потока и вставил Ваш код вначале(еще поправив синтаксис). Сейчас BAS тупо виснет при старте. Не пойму в чем причина. Если не сложно можете кусок простого проекта с такой реализацией скинуть?

  • Может кто-то привести пример с куском кода по моему вопросу? У меня BAS виснет и приложение BAS завершает работу.

  • @Basak298 Ухты, 22 дня назад вы об этом спрашивали.. а я как то не увидел..
    Если вопрос про:

    Подскажите как модифицировать предложенное решение, чтобы потоки не по 1-му стартовали по очереди, а партиями например по 20 штук(для примера число ядер процессора). Т.е. стартовали 20 потом через 30 секунд еще 20(к этому моменту 40 работают), потом еще через 30 секунд еще 20.

    То вот пример скрипта.

  • @Basak298 Я правильно понимаю, вы

    вставил Ваш код вначале(еще поправив синтаксис)

    то есть скопировали отсюда и вставили в экшен выполнить код ? Подправив синтаксис? :D

  • Попробовал Ваш код. Вроде работает нужная мне реализация, единственное не пойму зачем вы ставите 2 секции со sleep(вторая со значением 9999999 )?

  • @Basak298 Ну дак это пример ведь.

  • @Fox спасибо Вам!

  • @Fox Привет. хотел посмотреть твой пример. но у меня, после открытия в БАСё просто написано "инициализация" и ничего больше нет..

  • @CaptchaLom Скачал я свой пример и он нормально открылся:
    0_1511786446109_forum84.png

    На всякий пожарный перезалил по новой.

  • @Fox как создать тоже самое в онапликейшнстарт?

  • @kroda said in Как запускать потоки поочереди? а не все сразу:

    @Fox как создать тоже самое в онапликейшнстарт?

    Чегось?

  • Здесь обсуждалось, как открыть через каждые 20 секунд новый поток.
    А как добиться того, что: "пока не выполнится в первом (1) потоке определённое действие, второй (2) поток не начинает действовать.
    А как только в первом (1) потоке выполнится это действие, переход сразу ко второму (2) потоку"?

  • @bazeus Здесь обсуждалось три года назад!

    изображение_2023-08-22_173917842.png

  • @bazeus said in Как запускать потоки поочереди? а не все сразу:

    Здесь обсуждалось, как открыть через каждые 20 секунд новый поток.
    А как добиться того, что: "пока не выполнится в первом (1) потоке определённое действие, второй (2) поток не начинает действовать.
    А как только в первом (1) потоке выполнится это действие, переход сразу ко второму (2) потоку"?

    Через глобальную переменную. После выполнения определенного действия в первом потоке меняешь эту переменную. А во втором потоке отслеживаешь это изменение.

  • На самом деле все элементарно - В самом начале скрипта - получаем номер - тред индекс. И ставим слип 20000*тред_индекс. - Получаем равномерную загрузку всех ресурсов и главное постоянную ....
    типо так:
    Screen Shot 2023-08-24 at 03.33.51.png

  • @DuckDuck ещё получаем лишнюю работу потока на 20 секунд 🤣

  • @FastSpace а как тогда сделать что бы ее не получать?