Atomdict Save

A data structure for data exchange between multi lua states.

Project README

Atom Dict

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.

Quick Example

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 = -- get data handle from other lua state before.

  -- You can use pairs in this object
  for k,v in pairs(obj) do

  -- 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


atomdict.new_handle( { key = value(number or string) , ... } , [typename] )

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.

atomdict.delete_handle( 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)

Question ?

Open Source Agenda is not affiliated with "Atomdict" Project. README Source: cloudwu/atomdict
Open Issues
Last Commit
10 years ago

Open Source Agenda Badge

Open Source Agenda Rating