gpt4 book ai didi

lua - lua中的多值表

转载 作者:行者123 更新时间:2023-12-02 15:39:19 25 4
gpt4 key购买 nike

我正在 lua 中做一些并行操作。一个线程用于接收,一个用于处理,一个用于再次发送。为了在线程之间传递数据,我一直在使用表。

遗憾的是,现在我需要传递多个变量。我如何创建一个“多值表”(一个每个键可以有多个值的表)而不会对性能产生太大影响,还有比使用表更有效的方法吗?

到目前为止的简化代码:

sendQueue = {}
processQueue = {}

function recieveLoop()
while true do
Wait For recieve
table.insert(processQueue, recievedText)
end
end

function processLoop(sender, text, raw)
while true do
for key,value in pairs(processQueue) do
processData
table.insert(recieveQueue, raw)
end
end
end

然后对于 receiveLoop 也是如此

所有这 3 个函数都是线程化的,并且彼此独立运行。

最佳答案

表可以包含其他表,因此您可以在每条消息中存储所需数量的变量。

代替:

table.insert(queue, datum1)

你可以拥有:

local message = {datum1, datum2}
table.insert(queue, message)

或者简单地说:

table.insert(queue, {datum1, datum2})

根据需要在消息中包含尽可能多的“部分”。在接收端,可以通过索引来查看消息部分:

print('foo:', message[1], 'bar:', message[2])

或者解压元素:

local foo, bar = unpack(message) -- this is `table.unpack` in Lua 5.2
print('foo:', foo, 'bar:', bar)

或者您可以在消息中使用命名字段:

local message = {
foo = datam1,
bar = datum2,
}
table.insert(queue, message)

等等等等。

关于lua - lua中的多值表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10627548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com