在我的示例应用程序中,我基本上有两个线程。从另一个线程调用Lua函数
主线程包含一个Lua发动机(未线程安全的)和寄存器一些C++函数到该引擎。然而,其中一个函数执行时间过长(因为它通过互联网下载一些文件),我希望Lua引擎在下载过程中继续执行其他内容而不会阻塞。
因此,我希望把它异步的:当downloadFile()
功能从Lua调用,我创建了一个新的线程执行下载。然后,函数返回并且Lua引擎可以处理其他工作。当下载完成后,第二个线程需要告诉主线程它应该以某种方式调用一些附加功能processFile()
来完成它。
这就是我现在挣扎的地方:什么是最简单/最干净的解决方案来实现这个目标?
如果您不希望下载完成,只想在下载完成时收到通知,该怎么办?或者,在其他一些环境中:如果您有一些主线程并且您有第二个线程,例如以某些用户输入为例,并且您希望在用户输入内容后立即中断主线程?你不知道什么时候你必须加入()这两个线程,因为你不知道用户什么时候会输入什么。 – Etan 2009-12-20 16:27:54
'join()'只是一个可能的同步调用的例子。使用'finished()'类型的函数轮询下载状态仍然很简单。 – gwell 2009-12-22 00:41:37