Lua Lanes:使用C库

时间:2015-05-06 14:39:56

标签: c multithreading lua lua-lanes

我们正在运行一个通过Lua测试文件测试的c库。运行良好,但我们认为是时候进行一些多线程了。所以我们开始实现Lua Lanes,但却坚持为线程加载C lib。

所以我们有一个函数测试,这是实际的测试套件函数(它运行所有其他函数),作为一个开始我尝试将它推送到一个单独的线程,通过这样调用它:

local pwlog = require "pwlog"
--A milion lines of code, one of which is the test function
testF = lanes.gen("*", {required = {"pwlog"}}, tests)()

为了清楚起见:local pwlog未在函数中定义,而是在全局中定义。

我的基础是这样的:https://github.com/LuaLanes/lanes/issues/108,但我发现很难弄明白他究竟是什么。嗯,这是错的:

lua: /usr/local/share/lua/5.1/lanes.lua:327: main: function 'pwlogs/block_size' not found in Lane #0x2390770 destination transfer database

好吧,所以我尝试了不同的东西。我在测试函数的顶部添加了一行:

local function tests ()
    pwlog = require "pwlog"
    print("test")
--etc

我改变了调用:

testF = lanes.gen("*", tests)()

我认为这会奏效。这里pwlog直到线程已经创建后才存在,所以我认为一切都会好的。但它带来了一个非常令人费解的错误:

lua: /usr/local/share/lua/5.1/lanes.lua:327: can't copy non-deep full userdata across lanes

此错误将在以下行中引发:

testF = lanes.gen("*", tests)()

所以现在我被卡住了。我怎么能把C函数加载到我的lua通道线程中?

我正在使用Lua 5.1

0 个答案:

没有答案