On Thu, Feb 19, 2009 at 2:15 AM, Dieter Kluenter <die...@dkluenter.de> wrote: > > Brett Maxfield <brett.maxfi...@gmail.com> writes: > > > Doesnt "currently asm" indicate asm spinlocks.. Which can be unreliable. > > These can be even more unreliable with unpatched bdb? > > > > So perhaps you should try posix style semaphores.. Forcing posix/pthreads > > both at compile time and at run time.. > > db-4.7.25 has been build with --enable-posixmutexes > --enable-pthread_api
I use ../dist/configure --disable-java --enable-posixmutexes --with-mutex=POSIX/pthreads --enable-largefile --enable-cxx --with-mutex=POSIX/pthreads is important as it selects posix mutex at runtime, not compile time. If i remember above was also the workaround for before 4.7 patch #3 was released, which would cause asm to be selected by the selection algorithm and it was asm spinlocks which had the bug. On solaris at least, i think POSIX/pthreads is better as the thread library is pretty good (IMHO) but i suspect newer Linuxes will have good POSIX/pthreads also.. the BDB library makes debatable choice of asm at runtime even if the platform has a good pthreads implementation. I think on multi-threaded platform, spinlocks are non-optimal as there are more possible race conditions and consumtion of large numbers of locking / locker objects with openldap using asm spinlocks.. it is probably fine / optimal for single threaded use though. Cheers Brett