Вызов функции в несколько потоков (запутался)



  • Доброе времени суток. Появилась необходимость запустить функцию в 3 потока по 3 раза каждый, но ставя эти настройки:

    Screenshot_1.png
    что то идет не так.

    Можно ли как то сделать (точное количество), а то вроде меня ну необходимое не нашел, заранее спасибо!



  • @mmaxsmile said in Вызов функции в несколько потоков (запутался):

    3 потока по 3 раза каждый

    3*3=9 а у тебя кол-во выполнений 3 стоит. Если я нигде не ошибся



  • @serrgo создал тестовый скрипт test.xml по какой то причине 5 успешных выполнений, а не 9.

    5fcd38b5-e91e-4b4f-bf2a-ed866c611cfe-image.png

    Подскажите что не так делаю пожалуйста.



  • @mmaxsmile said in Вызов функции в несколько потоков (запутался):

    @serrgo создал тестовый скрипт test.xml по какой то причине 5 успешных выполнений, а не 9.

    Подскажите что не так делаю пожалуйста.

    Смотрите, вы установили параметры действия "Вызов функции в несколько потоков" по 3

    5afeeef3-1421-4752-b2d3-cf25fb19c9ef-изображение.png

    посмотрите подсказку поля "успешных выполнений"

    a5dd03fb-bdca-4ed1-968f-8b51e0b7f84f-изображение.png

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

    В вашем скрипте, в функции "Nice" только действие "сон", BAS запускает потоки по очереди и они по очереди завершаются, как только количество успешных завершений стало 3 BAS перестал запускать новые потоки, но в работе ещё оставались два потока, которые после действия "сон" так же завершились.
    По этому в отчёте у вас 5 успешных завершений.

    После завершения всех потоков в действии "Вызов функции в несколько потоков" завершилось и само действие, так как в основном потоке более у вас нет действий, то поток просто завершился.
    По этому в отчёте у вас 5 успешных завершений и одно завершение Ок.



  • @Fox понял, однако вопрос немного не до конца раскрыт.
    Можно ли как то завершить именно 9 потоков Nice внутри скрипта? (не создавая лишних)

    Потому что из идей только поставить глобальную функцию и ориентироваться по ней (добавлять +1 запущенных потоков) и отключать остатки по достижению 9, но может есть более простое решение?



  • @mmaxsmile said in Вызов функции в несколько потоков (запутался):

    @Fox понял, однако вопрос немного не до конца раскрыт.
    Можно ли как то завершить именно 9 потоков Nice внутри скрипта? (не создавая лишних)

    Используйте действие "Вызов функции асинхронно" и "for"

    Потому что из идей только поставить глобальную функцию и ориентироваться по ней (добавлять +1 запущенных потоков) и отключать остатки по достижению 9, но может есть более простое решение?

    Глобальную функцию? Не уверен, что понял вас правильно, но если что в теме "лайфхаки" я выкладывал пример как можно управлять количеством потоков во время работы скрипта:
    https://community.bablosoft.com/topic/3521/лайфхаки-bas/87


Log in to reply
 

  • 3
  • 11
  • 4
  • 4
  • 2
  • 20
  • 3
  • 5