Здравствуйте, гость ( Вход | Регистрация )

> Работа с несколькими окнами одновременно
Aqualon
сообщение 11.6.2023, 22:37
Сообщение #1


**

Neophyte
Сообщений: 23
Регистрация: 21.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.503
Возраст: 22



Собственно стоит задача - сделать так чтобы пилот мог одновременно посылать команды в 2 разных окна.
Погуглив немного я нашёл про coroutines, захотел проверить что это и как оно вообще работает но сходу влетел в столб. Есть вот такой код:
Код

Код

co1 = coroutine.create(
    function()
        for i = 1, 100 do
            log(i)
            coroutine.yield(co1)
        end
    end
)

co2 = coroutine.create(
    function()
        for i = 1, 100 do
            log(i)
            coroutine.yield(co2)
        end
    end
)

while true
    log(1)
    coroutine.resume(co1)
    coroutine.resume(co2)
end


Если я этот код вызываю - в логе есть только цифра 1, которая логируется в начале основного цикла, т.е. в основном цикле проходит единственная итерация.
Если я меняю log(i) на print(i) - цифра 1 логируется в логе бесконечно (т.е. основной цикл работает нормально) но никакого лога из корутин нет в принципе. Судя по всему функция в корутине валится с ошибкой, видимо контексте корутины вообще нет доступа к функциям пилота.

На этом моменте я уже начал подозревать что coroutine мне тут не подойдёт, разве что если ставить coroutine.yeld после каждой команды, но и это скорее всего не будет работать, т.к. основная проблема в задержках - если на одном окне например функция уйдёт в задержку - я хочу чтобы пока задержка тикает в одной корутине вторая корутина работала.

Собственно отсюда вытекает вопрос: можно ли заставить корутины работать таким образом который мне нужен (как минимум - передавать поток другой функции если в текущей функции стоит задержка), или же лучше использовать какой-то другой инструмент?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 12.6.2023, 20:25
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.765
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29991
Пользователь №: 11.279



но нужно понимать что это будут голые потоки. т.е. все require нужно внутри потока прописывать (если это требудется), что приводит к большим накладным расходам.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 25.10.2025, 2:13
Designed by Nickostyle