On Tue, May 03, 2005 at 12:12:10PM -0400, Rita wrote:> I have a quick question, does the xapian code supports
> multi-threading? Is the code thraed-safe?
http://xapian.org/docs/overview.html says:
Thread safety
There's no pthread specific code in Xapian. If you want to use the same
object concurrently from different threads, it's up to you to police
access (with a mutex or in some other way) to ensure only one method is
being executed at once. The reason for this is to avoid adding the
overhead of locking and unlocking mutexes when they aren't required. It
also makes the Xapian code easier to maintain, and simplifies building
it.
For most applications, this is unlikely to be an issue - generally the
calls to Xapian are likely to be from a single thread. And if they
aren't, you can just create an entirely separate Xapian::Database object
in each thread - this is no different to accessing the same database
from two different processes.
In 0.8.5, Xapian::QueryParser isn't thread safe (it uses bison which
forces use of static data). This will be fixed in 0.9.0 (to be released
this week, I hope). In 0.9.0 QueryParser has been reimplemented and no
longer uses bison.
Cheers,
Olly