Results 3 comments of NicolasX

it could be judged by the 'background' option.

没错,这个是在lua的全局状态机中加了一个锁,以保证多个线程执行lua代码时不会出错。但不并不是同时只有一个线程在运行,不过涉及到表写入或者垃圾回收等一些操作,必须要保证只有一个线程在运行,相关代码由一组lua宏封闭起来了。 如果想要使用多核特性,必须使用更细粒度的锁,比如每个表拥有一个单独的锁,不过这样也会导致语言效率上的问题,而且这样需要针对lua的虚拟机进行多线程的设计,就不能保证lua的简洁性了

首先,并不是所有的虚拟机语言都有锁,比如Lua就没有;Java虚拟机的锁粒度比较小,所以实现起来才比较复杂,jvm启动也比较慢;脚本语言的优势在于简单灵活,适合用作胶水语言,编写上层逻辑,和性能相关的部分应该交由编译型语言去做;最后,lua提供的协程支持并不能应对一切场景,比如需要两个(或多个)IO循环的场景:一个线程用于接收GUI消息,一个用于接收socket数据。 脚本语言的多线程虽然效率上的提升并不明显,但是为实现更复杂的应用提供了可能。