Асинхронный вызов функции



  • По дэфолту, когда вызываются асинхронные функции, то главный поток их не ждёт, а продолжает работу?



  • @itzpvpsher said in Асинхронный вызов функции:

    По дэфолту, когда вызываются асинхронные функции, то главный поток их не ждёт, а продолжает работу?

    Да, по этому она и называется "асинхронная"



  • @Fox 38751deb-d64e-459f-b8a9-0b833e343685-image.png
    Тогда почему я хочу 8 потоков в ряд запустить
    313216b2-ccda-4a6b-af27-5b5daca79c33-image.png
    Но в логе все пишется как поток 2
    И почему они моментально завершаются с сообщением ОК, если там 600 действий, которые он не мог никак выполнить за милисекунду)



  • @itzpvpsher said in Асинхронный вызов функции:

    @Fox
    Тогда почему я хочу 8 потоков в ряд запустить
    Но в логе все пишется как поток 2
    И почему они моментально завершаются с сообщением ОК, если там 600 действий, которые он не мог никак выполнить за милисекунду)

    Скорее всего ваш поток завершается ошибкой, вероятнее всего вы в новом потоке используете локальные переменные объявленные вне вызываемой функции



  • @Fox Тогда почему не пишется ошибка, а пишется "завершено успешно"? И ещё, данные я передаю с предыдущей функции
    9c0be0d5-9f00-43ea-ac07-25b9cd925576-image.png



  • @itzpvpsher said in Асинхронный вызов функции:

    @Fox Тогда почему не пишется ошибка, а пишется "завершено успешно"?

    Это особенность реализации действия, вызванные функции всегда завершаются "успешно", даже если их принудительно завершить ошибкой.

    @itzpvpsher said in Асинхронный вызов функции:

    И ещё, данные я передаю с предыдущей функции

    Самую вероятную причину такого поведения я назвал, больше гадать не буду, смысла нет.



  • @Fox С помощью лога после каждого действия, я увидел где происходит ошибка.
    2da4f006-d7de-4ada-96ed-e7bc9b691b7a-image.png
    На вот этом кубике

    Хотя перед этим, я паршу номер потока
    aabb8c9e-dcc1-41a6-b6a8-7205c6b98424-image.png

    Да и в режиме записи все отлично работает



  • @itzpvpsher said in Асинхронный вызов функции:

    @Fox С помощью лога после каждого действия, я увидел где происходит ошибка.
    На вот этом кубике

    Хотя перед этим, я паршу номер потока

    И как бы вы хотели, что бы я смог вам указать на эту ошибку?

    Да и в режиме записи все отлично работает

    В режиме "записи" всё выполняется в один поток. Повторюсь, вновь созданные потоки не имеют локального окружения, локальные переменные объявленные до вызова функции для них недоступны.



  • @Fox said in Асинхронный вызов функции:

    В режиме "записи" всё выполняется в один поток. Повторюсь, вновь созданные потоки не имеют локального окружения, локальные переменные объявленные до вызова функции для них недоступны.

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



  • @Fox у Вас нет предположений почему так может быть?



  • @itzpvpsher said in Асинхронный вызов функции:

    @Fox said in Асинхронный вызов функции:

    В режиме "записи" всё выполняется в один поток. Повторюсь, вновь созданные потоки не имеют локального окружения, локальные переменные объявленные до вызова функции для них недоступны.

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

    Вы, блин, серьёзно? Вы сейчас смотрите в свой скрипт и отметаете версии, которые я пытаюсь !угадать!. По поводу режима "записи" я уже сказал выше. Или прикладывайте тестовый скрипт, или описывайте ошибку по человечески, я не гадалка.

    @itzpvpsher said in Асинхронный вызов функции:

    @Fox у Вас нет предположений почему так может быть?

    Да, есть! У вас ошибка



  • @Fox Да, Вы правы. Нашёл ошибку. Я очень туплю в последнее время что-то(



  • @Fox ДАААА! РАБОТАЕТ! Правда такой софт сложный создал, что сам бас лагает)



  • @Fox Только есть ещё один вопрос, почему все потоки в логе отображаются как поток №2, если я запускаю потоки друг за другом. И они по сути должны быть паралельно друг с другом
    02b88fb6-497c-421d-a19a-ef419fbdbdc2-image.png



  • @itzpvpsher said in Асинхронный вызов функции:

    @Fox Только есть ещё один вопрос, почему все потоки в логе отображаются как поток №2, если я запускаю потоки друг за другом. И они по сути должны быть паралельно друг с другом

    Смотрите настройки действия:

    3eb1efe3-b183-42e5-8ee3-6e309ab40dfd-изображение.png



  • @Fox Ну у меня количество одновременных функций: 100, остальные настройки отвечают за другое.
    И вторая функция почему-то вызывается, после завершения первой



  • @itzpvpsher, какой вообще смысл запускать асинхронную функцию столько раз, каждая отдельным кубиком?



  • @Agnest said in Асинхронный вызов функции:

    @itzpvpsher, какой вообще смысл запускать асинхронную функцию столько раз, каждая отдельным кубиком?

    Не торопите пользователя, возможно он постепенно дойдёт до циклов :D



  • @Fox какие циклы, там функия одна, но входящие параметры то разные



  • @itzpvpsher said in Асинхронный вызов функции:

    @Fox какие циклы, там функия одна, но входящие параметры то разные

    Поместите все параметры в список и вызывайте функцию в цикле, аргументы берите из списка по индексу счётчика итераций cycle_index


Log in to reply