There are some important caveats for using DB handles concurrently in multiple threads:
See db(3) and db_appinit(3) for more information on using DB in the context of threads.
The C++ files and directories in the source distribution are:
|db/examples_cxx/||The example programs recoded in C++.|
|db/include/cxx_int.h||Internal C++ include file.|
|db/include/db_cxx.h||External C++ include file.|
C++ support is automatically built on Win32. To configure it under UNIX, specify --enable-cxx as a configuration argument (see the file db/build.unix/README for more information).
Underlying API support:
|db_archive(1)||Log archival. See the log_archive() function in db_log(3)|
|db_checkpoint(1)||Transaction checkpoint. See the txn_checkpoint() function in db_txn(3).|
|db_deadlock(1)||Deadlock detection. See the lock_detect() function in db_lock(3).|
|db_recover(1)||Database recovery. See the DB_RECOVER and DB_RECOVER_FATAL flags for the db_appinit() function in db_appinit(3).|
This change is NOT transparent to applications. We incremented the hash access method database version number, and the new hash function will only be used in newly created databases, which means that applications written using version DB 2.2.0 and greater will be able to share databases with applications written using previous versions of DB with a major number of 2.
However, we now use the __ham_func5() hash function internally, in the log and lock subsystems, which means that applications written using version DB 2.2.0 and greater will NOT be able to share database environments, or read log files, written using previous versions of DB.
The flags that may be specified when creating the DB environment have been extended in DB 2.2 to provide new functionality: the list of new flags includes DB_NOMMAP, DB_THREAD and DB_TXN_NOSYNC.
In all cases, see db_appinit(3) for more information.