2 つの Lua レーン間でロックを使用しようとしていますが、両方のレーンが同時に lock_func に入っていることがわかりました。以下はスニペットです。
Code Snippet
==================
require"lanes"
local linda = lanes.linda()
lock_func = lanes.genlock(linda,"M",1)
local function lock_func()
print("Lock Acquired")
while(true) do
end
end
local function readerThread()
print("readerThread acquiring lock")
lock_func()
end
local function writerThread()
print("writerThread acquiring lock")
lock_func()
end
Thread1= lanes.gen("*",{globals = _G},writerThread)
Thread2= lanes.gen("*",{globals = _G},readerThread)
T1 = Thread1()
T2 = Thread2()
T1:join()
T2:join()
以下の出力から、両方のレーンが同時に lock_func 関数に入ったことがわかります。
output
==================
writerThread acquiring lock
Lock Acquired
readerThread acquiring lock
Lock Acquired
上記のコードからのロックの実装に問題はありますか?