I've just checked in some changes to the low level filing stuff so that
Paged files (BTreeFiler, HashFiler, NameIndexer, ValueIndexer) support
multiple descriptors and safe concurrent access. Previously, all
high-level calls were synchronized, so only one thread could have access
to the underlying file at any one time, which was very safe, but
presented a serious performance bottleneck.
I've tested this with 50 threads randomly reading and writing values to
the same collection, and haven't run into any problems. Let me know if
any problems creep up.
--
Tom Bradford - http://www.tbradford.org
Architect - XQRL (XQuery Engine) - http://www.xqrl.com
Apache Xindice (XML Database) - http://xml.apache.org/xindice
Labrador (Web Services Hub) - http://www.notdotnet.org/labrador