最近在修改一个小项目,想效仿skynet一样,使用c++作为底层,lua作为业务逻辑语言,不过由于水平和时间有限,虽然还没做完,不过这次记录下感想吧。
在C++中使用lua
lua和c一般有两种用法,lua调用c或者是c调用lua。我是使用到在C++中调用lua。如果还是新手可以参考官方的文档Calling Lua From a C Program(With Snippets)
在最初学习lua的c api时,第一想到就是api绝对需要封装,不封装会写完,看代码会炸的。
略微google发现已经有大佬封装了一个,叫fflua的项目,不过可惜并非是线程安全的。由于我那个项目是有多线程需求的,多线程安全是避不开的,只能自行封装下了。但不一定封装的好,毕竟多线程坑毕竟多,在加上lua函数多返回是个问题。
多线程与lua虚拟机
我的想法是把C++中部分逻辑放入lua中处理,而不是完全由lua进行处理。
我想试着用类似线程池的思路,做出一个lua虚拟机池,多个线程将lua函数调用传递给lua线程池,然后由lua虚拟机池控制lua虚拟机的度调。