Несколько функции - в разные потоки



  • Ребят, подскажите плиз, хочу организовать несколько функции в разные потоки. То есть, у меня есть 3 функции , хочу чтобы при запуске скрипта запускались (одновременно?) :

    1 функция - в первый поток
    2 функция - второй поток,
    3 функция - в третий поток

    Как можно реализовать?)



  • @ogurchiki said in Несколько функции - в разные потоки:

    Ребят, подскажите плиз, хочу организовать несколько функции в разные потоки. То есть, у меня есть 3 функции , хочу чтобы при запуске скрипта запускались (одновременно?) :

    1 функция - в первый поток
    2 функция - второй поток,
    3 функция - в третий поток

    Как можно реализовать?)

    Через if и действие Номер потока, вот пример:

    //в начале скрипта применяем действие Номер потока, после этого нам будет доступна переменная [[THREAD_INDEX]]
    
    if [[THREAD_INDEX]] == 1:
        вызов func1()
    
    if [[THREAD_INDEX]] == 2:
        вызов func2()
    
    if [[THREAD_INDEX]] == 3:
        вызов func3()
    


  • @santilo биг сенк)



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



  • @IvanG said in Несколько функции - в разные потоки:

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

    Так вам же уже написали
    вначале потока ставим

    определить номер потока THREAD_INDEX

    потом условие, если THREAD_INDEX равно 1 (то есть это первый поток) выполняем функцию №1
    if [[THREAD_INDEX]] == 1:
    вызов func1()

    далее, если THREAD_INDEX равно 2 (то есть это второй поток) выполняем функцию №2
    if [[THREAD_INDEX]] == 2:
    вызов func2()

    далее если THREAD_INDEX равно 3 (то есть это третий поток) выполняем функцию №3
    if [[THREAD_INDEX]] == 3:
    вызов func3()

    Итого каждый поток будет выполнять только свой № функции, в другом потоке скрипт к ней тупо не перейдет.



  • @Samael_96 все понял теперь, спасибо!



  • Вопрос насколько можно полагаться на номер потока?
    Вероятно имел ошибку из за использования номера потока, но не уверен. Пошел другим путем. Решая я туже задачу и стремясь избавиться от зависимости от номера потока придумываю через использование ресурса.
    Задача та же: есть несколько функций которые должны выполняться параллельно, время выполнение каждой из низ может быть любым угодно, после завершении работы функции ее нужно запустить вновь и не допустить запуска более одного экземпляра одной и той же функции.
    Решение: в OnApplicationStart создам ресурс stream и заполним его индексами оп количеству функций. В Main получим ресурс(одноразово) и используем его вместо номера потока как в примере выше. ВАЖНО: внутри блока if возвращаем/добавляем элемент в ресурс чтобы работало. Запускаем то число потоков.
    Вероятно рабочий пример.
    0_1519110464847_stream.xml
    Возможно существуют другие способы, не могу придумать.

    Будет и вопрос: что за параметры при создании ресурса?



  • @ruzne, нет, это гемор какой-то. Все должно быть нормально через номера потоков. Тем более, что функции нужно по кругу гонять. Не завершай поток после выполнения функции, а по метке в начало функции переводи и точно потоки будут одни и теже работать.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.