У меня возникли проблемы с пониманием этого кода... Я ожидал чего-то похожего на потокование, где я получал бы выход со случайными "nooo" и "yaaaay", чередующимися друг с другом, поскольку они оба делают асинхронную печать, но скорее, я обнаружил, что основной поток, кажется, блокируется при первом вызове coroutine.resume() и, таким образом, предотвращает запуск следующего, пока первый не даст.
Если это предназначенные операционные сопрограммы, для чего они полезны и как я могу достичь цели, на которую я надеялся? Должен ли я реализовать собственный планировщик для этих сопрограмм для работы асинхронно?, потому что это кажется беспорядочным, и я могу также использовать функции!
co1 = coroutine.create(function ()
local i = 1
while i < 200 do
print("nooo")
i = i + 1
end
coroutine.yield()
end)
co2 = coroutine.create(function ()
local i = 1
while i < 200 do
print("yaaaay")
i = i + 1
end
coroutine.yield()
end)
coroutine.resume(co1)
coroutine.resume(co2)