问题标签 [lua-lanes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lua - 在 Lua 通道之间共享一个全局变量
我想在 2 个通道之间共享一个全局变量,这个想法是当通道 1 更新一个共享变量时,我应该能够在它被安排时在通道 2 上获得它的更新值。有针对这个的解决方法吗?
下面的代码片段:-
lua - 在 Lua 通道之间锁定
我正在尝试在 2 个 Lua 通道之间使用锁,但观察到两个通道同时进入 lock_func ..下面是片段
从下面的输出我们可以看到两条通道同时进入了 lock_func 函数
从上面的代码实现锁有什么问题吗?
lua - 将 package.path 变量传递给 lua 通道
我想通过package.path
lua 车道
是否有可能package.path
通过将其作为参数传递来成为lane1的一部分lanes.gen
?
lua - 带有上值的奇怪 LuaLanes 行为
我有这段代码,其中 [LuaLanes][1] 内部执行的函数似乎忽略了设置上值,所以我想知道这是否是正常行为,我是否使用错误。
当使用 Lanes 运行时,断言失败,但运行良好(如预期)运行 just main()
。
输出使用main()
:
输出使用lanes.gen("*",main)()[1]
为什么get_variable()
即使在设置另一个表后仍返回同一个表?有任何想法吗?
PS:另外,可能相关,为什么Common在车道内运行时会发生变化?它会完全复制到新的 Lua 状态吗?
multithreading - Lua socket.dns.toip 不能在通道线程工作者中工作
我正在尝试创建多线程观察程序,它尝试检查主机名。简单的代码展示了一般的想法。但是当我在线程工作者中调用 sock.dns.toip 时,我得到了奇怪的脚本行为。工人不执行。如果我从工作人员中排除套接字代码,则一切正常。
如何在线程工作者中运行 socket.dns.toip?
c - Lua Lanes:使用 C 库
我们正在运行一个通过 Lua 测试脚本进行测试的 c 库。这运行良好,但我们决定是时候进行一些多线程了。所以我们开始实现 Lua Lanes,但在为线程加载 C lib 时遇到了困难。
所以我们有一个函数测试,这是实际的测试套件函数(它运行所有其他函数),作为开始,我尝试将它推送到一个单独的线程,通过这样调用它:
需要明确的是: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
好吧,所以我尝试了一些不同的东西。我在测试函数的顶部添加了一行:
我改变了调用:
我以为这会奏效。在创建线程之前,这里的 pwlog 不存在,所以我认为一切都会好起来的。但它返回了一个非常令人费解的错误:
此错误在以下行中引发:
所以现在我被卡住了。我应该如何将 C 函数加载到我的 lua 通道线程中?
我正在使用 Lua 5.1
lua - 如何将 luajit 指针转换为字符串并返回?
我需要一些帮助将 luajit 指针转换为字符串并返回。
首先我定义ctype:
然后使用 malloc 分配一些内存,然后创建“EncryptionKeys”变量。
我首先使用以下方法将变量转换为 lua 字符串:
但我不知道如何将其转换回来!有人可以帮帮我吗?
仅供参考:我将“EncryptionKeyMemoryAddress”变量传递给 lua 通道的函数参数之一(https://lualanes.github.io/lanes/)。
编辑:这是我正在处理的代码部分:这是我的服务器的客户端管理器模块,它管理一个 lua 状态列表,所有这些状态都可以访问连接到服务器的任何客户端。他们都使用共享的内存部分,我希望他们可以使用指针访问。
lua - 使用 {globals = _G},返回 lanes.lua:329:无法跨通道复制非深度完整用户数据
这里的大多数解决方案都使用lanes.gen("*",{globals = _G},func)
. 当我运行它时,我得到can't copy non-deep full userdata across lanes
. 也许这是因为io.stderr, io.stdout, io.stdin
which are file
type or lanes.core.cancel_error
which is userdata
type or lanes.core timer_gateway
。如何使用 {globals = _G} 或解决方法?它是一个错误吗?
lua - 从 Lua-lanes 调用 c 函数
我想使用通道从 lua 调用 c 函数。
当我运行变体 (1) 时,我得到Lua Error: module 'App' not found: no field package.preload['App']...no file '/App.lua'...
. 当我运行变体 (2) 时,我得到Bad library name: App
.
如何调用App.get_appinfo()
使用lanes
?我可以将所有App
函数移动到包中,但它必须从内存加载,而不是文件系统。我嵌入了所有 lua 包。