1

2つのレーン間でグローバル変数を共有したかったのですが、レーン1が共有変数を更新すると、スケジュールされたときにレーン2で更新された値を取得できるはずです。これに対する解決策はありますか?

以下のコードスニペット:-

shared_variable = 0
local function lane1()
    ..
    shared_variable = shared_variable + 1
end

local function lane2()
    ..
    print(shared_variable)-->shared variable is not getting updated,always prints 0
end

Thread1= lanes.gen("*",{globals = _G},lane1)
Thread2= lanes.gen("*",{globals = _G},lane2)

T1 = Thread1()
T2 = Thread2()

T1:join()
T2:join()
4

2 に答える 2

2

以下は、レーン間で変数を共有できるサンプル実装です (set & get メソッドを使用)。

require("lanes")

shared_variable = 0

local linda = lanes.linda()

local function lane1()
    while true do
        shared_variable = shared_variable + 1
        linda:set("var", shared_variable)
    end
end

local function lane2()
    while true do
        local v = linda:get("var")
        print(v)
    end
end

Thread1= lanes.gen("*",{globals = _G},lane1)
Thread2= lanes.gen("*",{globals = _G},lane2)

T1 = Thread1()
T2 = Thread2()

T1:join()
T2:join()
于 2013-10-08T04:10:20.187 に答える