问题标签 [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.
multithreading - Lua Lanes 和多核支持:可以做到吗?
Lua Lanes说它通过多线程支持多核。这不正确吗?您不需要使用多个进程来利用多个内核吗?Lua Lanes 会这样做吗?
也许我误解了他们在说什么。这是他们网站上的一段话:
Lua Lanes 是一个 Lua 扩展库,提供了并行运行多个 Lua 状态的可能性。它旨在用于优化多核 CPU 的性能,并研究使 Lua 程序自然并行的方法。
谢谢
lua - luajit2 中的 lua-lanes
有没有办法在luajit 2中使用lanes库?
据我所知,luajit 有一个限制,即不支持lua_dump() c-api 函数。还有其他方法可以获取给定函数的代码块吗?
multithreading - LuaLanes 无法在函数之间传递全局变量(在单个通道中)
希望你今天过得愉快。
过去几天我一直在用 Lua 编写一个 IRC 聊天机器人,最后我想开始在其中实现多服务器支持。
到目前为止,我已经创建了 irc“对象”来管理每个服务器,以及所有这些快乐的东西——现在,我遇到了线程问题。
你可能知道,Lua 没有内置的线程支持。就库而言,LuaLanes 和 LuaThreads 似乎最接近我想要使用的东西。让我选择 LuaLanes 是因为 LuaThreads 需要修改过的 lua 核心。加上 LuaLanes 的“lindas”功能引起了我的注意(以后在插件中使用)
无论如何,我遇到的问题是当您使用函数middleman
(例如)生成车道时,然后调用另一个函数sqr
(例如)。如果您生成类似的函数lanes.gen({globals = _G}, middleman)
,中间人将可以访问您当前全局范围内的所有内容,这正是我想要的。问题是,如果middleman
调用sqr
,并sqr
使用全局范围内的某些东西,它会抛出一个错误,几乎就像_G
突然变空一样。
这是我设法使用上面的示例拼凑的一些示例代码:
产生一个错误说:
(顺便说一下,我使用的是linux)
但是,如果您将第 11 行从 更改gen = lanes.gen({globals = _G}, middleman)
为gen = lanes.gen({globals = _G}, sqr)
,它可以正常工作。
我已经检查过了,如果您通过“*”(或“libs_str”参数的任何其他选项)来加载默认库,也会发生同样的事情。
我真的希望有类似 Java 的 Lua 线程库之类的东西,这就是我最初学习使用线程的方式。(我知道,不是我想的最理想的环境)
谢谢,我非常感谢帮助。特别是因为这完全停止了我的 IRC 机器人开发!:(
multithreading - 如何检测和快速响应时间过长的 lua 函数?
我正在使用 Corona SDK 制作一个需要 luasocket 的简单应用程序。Corona SDK 支持 luasocket 做异步 http req。
但我想使用来自 luasocket 的 UDP。来自 luasocket 的 UDP receive() 方法在收到消息之前一直阻塞。
Corona SDK 不支持 LuaLanes。因此,在另一个线程中收听 udp 消息是完全不可能的。
所以我只是想在lua中是否有任何方法/技巧/解决方法来检测和取消一个函数,在这种情况下是udp.receive(),响应时间太长?
提前致谢
c - 如何让 Lua Lanes 与我的游戏服务器一起工作?
我整天都在绞尽脑汁,我就是想不通。我的服务器使用单一状态将我的所有脚本作为全局变量加载(用于随时调用,而不必luaL_dofile
每次我想运行脚本时都调用)。当我尝试使用车道时,问题就出现了。require "lanes"
可以正常工作(我认为?它会适当地返回一个表给 package.loaded ...),因为我在 Linux(Ubuntu 11.10 x86)上的相应目录中有 lanes.lua。然而,当我去做的时候,lanes.gen("", functionName)
它告诉我attempt to index global 'lanes': a nil value
...... 此时我决定尝试package.loaded["lanes"].gen("", functionName)
,它告诉我...attempt to index field 'gen': a nil value
如果您需要更多信息,请告诉我。预先感谢您至少尝试提供帮助。
c - 如何将全局变量或环境从主要状态转移到 Lua 通道?
作为在我的游戏服务器上让 Lua Lanes 正常运行的测试,我正在尝试在新线程中使用来自主状态的全局函数。不幸的是,这个特定的代码不断导致Assert Failure in tools.c line 1216
. 我正在尝试进行设置,这样我就可以在不锁定主线程以及最终锁定我的游戏服务器的情况下完成繁忙的工作。有没有更好的方法来做到这一点?或者也许我可以luaL_newthread(state)
在我的服务器中运行我的脚本?请告诉我正确的方向,因为这目前正在停止我的发展。提前致谢。
lua - LuaLanes 和 LuaSockets
我正在开发一个使用套接字与外界通信的小型 Lua 应用程序(在 Lua for Windows 下,如果这很重要)。(LuaSocket)
我正在尝试同时提出几个请求。所以我认为 LuaLanes 是要走的路。(当然,如果有更好的解决方案,我愿意接受替代方案,但不希望为此处理协程。)
像这样的东西:
其中laneTest
函数定义如下:
我的问题是,在laneTest
函数内部,当作为车道运行时,我收到这个可爱的错误消息:
尝试索引本地“客户端”(用户数据值)
(从线client:getpeername()
)
所以..我不确定这里发生了什么?通道与套接字不兼容,还是我做错了什么?
我想这可能是 Lua for Windows 附带的通道版本是古老的(luaforwindows)并且不适用于套接字,但最新版本可能?(车道 2.0.4 与更新的 3.xx)
我真的不知道如何更新我拥有的 Lanes 版本,否则我现在已经尝试过了,所以。如果那是我可能要去的地方,或者有更明显的事情表明我做错了,我将不胜感激。
编辑:我继续通过 luarocks 安装了车道,并且使用安装为岩石的车道 3.1.6-1 遇到了同样的问题。
编辑2:试过这个(但仍然失败):
- 这未能声称:
attempt to call global 'require' (a nil value)
- 删除
require ('socket')
函数内的行并重试也失败说:attempt to index local 'client' (a userdata value)
我为错过明显的事情提前道歉,但是......你如何让套接字与车道一起工作?
编辑3:
好吧,我正在编辑它以供将来参考:)
据我所知,没有修补luasockets就无法使用带有套接字的通道。有关更多信息,请参见此处的讨论;但简而言之(正如德科的回答中所解释的那样):车道不适用于用户数据。luasocket 不提供任何其他访问套接字/套接字信息的方式。
我不想修补 luasocket,就像我宁愿使用车道一样,我会继续坚持使用 copas 或 couroutines。
谢谢大家!
c - Lua Lanes 应用程序崩溃
我有一个使用最新 lua 通道的 Lua 脚本。我有以下
脚本
我的问题是:
现在,当我从我的应用程序(在 Windows 上)执行它时,我在执行它时遇到了崩溃,以下是崩溃时的调用堆栈。
任何人都可以帮助我尝试帮助我。由于包含和加载 lanes.configure() 似乎会导致此问题 可能是我做错了什么或任何建议可能会有所帮助。如果您需要更多信息,请告诉我。
非常感谢。
问候,
马尤尔
lua - Lua Lanes 琳达
我的车道设置和运行都很好,但我无法理解 linda 的值传递,我在车道站点上找到了这段代码:
如果我设置/获取我的应用程序崩溃,那么我想知道如何为设置/获取声明表?
如果我将它用作字符串,那么 set/get 类型的工作但会在运行几次车道后崩溃:
有人在这里有任何指示吗?
c - Unable to call a C function from Lua-lanes
While trying to call a C function from Lua module, using Lua-lanes, the control doesn't transfer to the 'C' function. Is there any problem with which Lua-lanes won't work in a threaded way with an external C dll?
Below is the code snippet
Lua Snippet:
C snippet compiled to a dll with VS-2012: