diff --git a/init.lua b/init.lua index bf65b70..26eb411 100644 --- a/init.lua +++ b/init.lua @@ -35,7 +35,7 @@ if not _G["$multi"] then _G["$multi"] = {multi=multi,thread=thread} end -multi.Version = "15.3.0" +multi.Version = "15.3.1" multi.Name = "root" multi.NIL = {Type="NIL"} local NIL = multi.NIL @@ -168,17 +168,23 @@ function multi:newConnection(protect,func,kill) c1(function(...) cn.__count[1] = cn.__count[1] + 1 + c1:Lock() if cn.__count[1] == cn.__hasInstances[1] then cn:Fire(...) cn.__count[1] = 0 + c1:Unlock() + c2:Unlock() end end) c2(function(...) cn.__count[1] = cn.__count[1] + 1 + c2:Lock() if cn.__count[1] == cn.__hasInstances[1] then cn:Fire(...) cn.__count[1] = 0 + c1:Unlock() + c2:Unlock() end end) return cn @@ -259,6 +265,7 @@ function multi:newConnection(protect,func,kill) function c:fastMode() if find_optimization then return self end function self:Fire(...) + if lock then return end for i=1,#fast do fast[i](...) end diff --git a/rockspecs/multi-15.3-1.rockspec b/rockspecs/multi-15.3-1.rockspec new file mode 100644 index 0000000..d811a82 --- /dev/null +++ b/rockspecs/multi-15.3-1.rockspec @@ -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", + } +} \ No newline at end of file