in reply to How to share huge data structure between threads?

Yes and no.
DB_File.pm is not thread safe.
Neither is BerkleyDB.pm

The strategy with DB_File is to blessed(%hash)->flush after writing, and to retie before reading to ensure you got the latest data.

This will work fine but only if you use a newer version of BerkleyDB (anything about 2.5 will work fine with this technique).

If you want better transaction control, use BerkeleyDB.pm, and you got access to the full api (just go buck wild).

You other choice to consider is DBD::SQLite.

If any of this is too slow for you, you can always use Cache::Cache


MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
** The Third rule of perl club is a statement of fact: pod is sexy.

  • Comment on Re: How to share huge data structure between threads?