Fixing connection * issue

This commit is contained in:
Ryan Ward 2023-01-04 10:28:02 -05:00
parent 71ab702a75
commit dc9cee5a3e
2 changed files with 47 additions and 1 deletions

View File

@ -35,7 +35,7 @@ if not _G["$multi"] then
_G["$multi"] = {multi=multi,thread=thread} _G["$multi"] = {multi=multi,thread=thread}
end end
multi.Version = "15.3.0" multi.Version = "15.3.1"
multi.Name = "root" multi.Name = "root"
multi.NIL = {Type="NIL"} multi.NIL = {Type="NIL"}
local NIL = multi.NIL local NIL = multi.NIL
@ -168,17 +168,23 @@ function multi:newConnection(protect,func,kill)
c1(function(...) c1(function(...)
cn.__count[1] = cn.__count[1] + 1 cn.__count[1] = cn.__count[1] + 1
c1:Lock()
if cn.__count[1] == cn.__hasInstances[1] then if cn.__count[1] == cn.__hasInstances[1] then
cn:Fire(...) cn:Fire(...)
cn.__count[1] = 0 cn.__count[1] = 0
c1:Unlock()
c2:Unlock()
end end
end) end)
c2(function(...) c2(function(...)
cn.__count[1] = cn.__count[1] + 1 cn.__count[1] = cn.__count[1] + 1
c2:Lock()
if cn.__count[1] == cn.__hasInstances[1] then if cn.__count[1] == cn.__hasInstances[1] then
cn:Fire(...) cn:Fire(...)
cn.__count[1] = 0 cn.__count[1] = 0
c1:Unlock()
c2:Unlock()
end end
end) end)
return cn return cn
@ -259,6 +265,7 @@ function multi:newConnection(protect,func,kill)
function c:fastMode() function c:fastMode()
if find_optimization then return self end if find_optimization then return self end
function self:Fire(...) function self:Fire(...)
if lock then return end
for i=1,#fast do for i=1,#fast do
fast[i](...) fast[i](...)
end end

View File

@ -0,0 +1,39 @@
package = "multi"
version = "15.3-1"
source = {
url = "git://github.com/rayaman/multi.git",
tag = "15.3.1",
}
description = {
summary = "Lua Multi tasking library",
detailed = [[
This library contains many methods for multi tasking. Features non coroutine based multi-tasking, coroutine based multi-tasking, and system threading (Requires use of an integration).
Check github for documentation.
]],
homepage = "https://github.com/rayaman/multi",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
["multi"] = "init.lua",
["multi.integration.lanesManager"] = "integration/lanesManager/init.lua",
["multi.integration.lanesManager.extensions"] = "integration/lanesManager/extensions.lua",
["multi.integration.lanesManager.threads"] = "integration/lanesManager/threads.lua",
["multi.integration.loveManager"] = "integration/loveManager/init.lua",
["multi.integration.loveManager.extensions"] = "integration/loveManager/extensions.lua",
["multi.integration.loveManager.threads"] = "integration/loveManager/threads.lua",
--["multi.integration.lovrManager"] = "integration/lovrManager/init.lua",
--["multi.integration.lovrManager.extensions"] = "integration/lovrManager/extensions.lua",
--["multi.integration.lovrManager.threads"] = "integration/lovrManager/threads.lua",
["multi.integration.pesudoManager"] = "integration/pesudoManager/init.lua",
["multi.integration.pesudoManager.extensions"] = "integration/pesudoManager/extensions.lua",
["multi.integration.pesudoManager.threads"] = "integration/pesudoManager/threads.lua",
["multi.integration.luvitManager"] = "integration/luvitManager.lua",
["multi.integration.threading"] = "integration/threading.lua",
--["multi.integration.networkManager"] = "integration/networkManager.lua",
}
}