From 934d15f424106a6426641f4fa067382b51978b45 Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 5 Apr 2022 23:28:26 +0800 Subject: lock server --- xmake/modules/private/service/server.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xmake/modules/private/service/server.lua b/xmake/modules/private/service/server.lua index 56441ef30..d627076d7 100644 --- a/xmake/modules/private/service/server.lua +++ b/xmake/modules/private/service/server.lua @@ -67,6 +67,15 @@ end -- run main loop function server:runloop() assert(self._HANDLER, "no handler found!") + + -- ensure only one server process + local lockfile = os.tmpfile(tostring(self)) .. ".lock" + local lock = io.openlock(lockfile) + if not lock:trylock() then + raise("%s: has been started!", self) + end + + -- run loop local sock = socket.bind(self:addr(), self:port()) sock:listen(100) print("%s: listening %s:%d ..", self, self:addr(), self:port()) -- cgit v1.3.1