I'm working on a method for data synchronization between various threads. The idea I came up with I call a "Versionator" (for lack of a better term, though perhaps someone here knows one).

Basically, it has a couple sets of your data. For operations which require the data set remain constant until the entire operation is completed (ie, a rendering pass) you access one set. Meanwhile, all your updates are done on another set. When ready, you sync them.

Anyway, take a look at www.pacificwebguy.com, and let me know what you think.