fengyikil

Results 3 comments of fengyikil

嗯,所有虚拟机语言都有锁,只是锁的粒度大小不同而已。比如java的锁粒度比较小,多核加速效果较明显,其它的动态语言基本都没有实现多核特性,python直接一个巨粒度锁,封死多线程。从实验结果看lua的锁粒度跟python类似,几乎没有加速效果,甚至由于切换运行栈更慢了。如果要达到写法上的效果,lua也提了供协程支持。所以你这个库只有学习研究的意义,并没有实际用途。

你说的这个场景更适合解决方案应该是在 c/c++层整合两个eventloop为lua层的一个eventloop,在lua层去判断事件来源。更本质上在单核时代 线程和协程是有过争论的,单核时代 线程是没有加速功能的,线程和协程的区别仅仅是由操作系统提供API实现执行栈的切换,还是语言自身提供机制实现执行栈的切换 (c里面可以用长跳转来实现,不出意外lua底层也是这么实现的)。即使现在多核时代原来多线程写法但并不需要多核加速的问题现在人们也倾向于用协程来处理,因为这样速度更快(没有陷入内核)。总之我认为在需要加速的情景下应采用多线程,无需加速的情景使用协程更为合理,速度更快,还省了加锁解锁的麻烦。复杂的情景可能需要两种一起混合使用。

那么能支持排除其中几个文件吗?类似cmake 的 file(GLOB SOURCES ../test/*.c) list(REMOVE_ITEM SOURCES ../test/abc.c) list(REMOVE_ITEM SOURCES ../test/def.c)