Atomdict implements a data structure for multi lua state.
You can use it in multi-threads , create one lua state per thread. Atomdict will help you exchange a group data atomic between lua states.
In data server :
local ad = require "atomdict"
local handle = ad.new_handle { HP = 100 , Name = "Alice" }
-- Send handle (A integer) to other lua state in other thread
In data client :
local ad = require "atomdict"
-- ...
local obj = ad.new(handle) -- get data handle from other lua state before.
-- You can use pairs in this object
for k,v in pairs(obj) do
print(k,v)
end
-- Set obj.Name in local state, others can't see it before call ad.barrier()
obj.Name = "Bob"
-- put barrier in your main loop of the program
ad.barrier()
Use a table to init atomdict . You can name the type. If you have many objects with the same structure , giving a typename will improve the performance.
It returns an integer handle.
Delete an atomdict handle. You must delete it before none of the object binding to the handle.
Create an object binding the atomdict handle. It returns an userdata like a table.
Call barrier to commit atomdict objects that their changes could be seen by others.
Print the object to the stdout. (for debug)
Print the handle to the stdout. (for debug)
- Send me an email : http://www.codingnow.com/2000/gmail.gif
- My Blog : http://blog.codingnow.com
- Design : http://blog.codingnow.com/2012/07/dev_note_23.html (in Chinese)