如何像在等待组中一样在lua中等待所有协程完成?

问题描述 投票:0回答:1

如何像在等待组中一样在lua中等待所有协程完成? Semaphobe完成了go中的Waitgroup。但是如何在lua中完成它呢?还是更好的方案?

lua synchronization coroutine
1个回答
2
投票

Lua不是线程脚本语言。它不具有可以同时发生多个事物的概念(您可以在不同的线程上执行多个独立的Lua状态,但是它们是different Lua状态。如果您希望它们能够彼此通信,那么您必须提供手动操作的方法)。

因此,Lua协程只是一个函数,可以选择暂停执行,将一些值返回给调用协程的函数。然后,用户可以恢复协程,使其进一步执行某些任务。这是协作式多任务处理;任务只有在choose to时才挂起执行。这与抢先式多任务处理相反,在抢先式多任务处理中,任务可以停止执行或与其他任务并行执行。

鉴于此,“等待”一个协程或一组协程的想法根本没有道理。您希望协程进一步执行时,您可以[。这不是被动行动。

您当然可以创建一个协程列表,然后依次重复每个协程,直到所有协程终止。但是没有Lua标准库函数可以执行此操作,因为它对于协程执行的用途通常没有用。
© www.soinside.com 2019 - 2024. All rights reserved.