<strong>What priorities should threads/tasks executing Berkeley DB functions
be given?</strong>
</span>
<p>Tasks executing Berkeley DB functions should have the same, or roughly
equivalent, system priorities. For example, it can be dangerous to give
tasks of control performing checkpoints a lower priority than tasks of
control doing database lookups, and starvation can sometimes result.</p>
</li>
<li>
<spanclass="bold">
<strong>Why isn't the C++ API exception safe?</strong>
</span>
<p>The Berkeley DB C++ API is a thin wrapper around the C API that maps most
return values to exceptions, and gives the C++ handles the same
lifecycles as their C counterparts. One consequence is that if an
exception occurs while a cursor or transaction handle is open, the
application must explicitly close the cursor or abort the transaction.</p>
<p>Applications can be simplified and bugs avoided by creating wrapper
classes around <ahref="../api_reference/C/dbc.html"class="olink">DBC</a> and <ahref="../api_reference/C/txn.html"class="olink">TXN</a> that call the appropriate
cleanup method in the wrapper's destructor. By creating an instance
of the wrappers on the stack, C++ scoping rules will ensure that the
destructor is called before exception handling unrolls the block that
contains the wrapper object.</p>
</li>
<li>
<spanclass="bold">
<strong>
How do I handle a "pass 4" error when trying to run one of the
example Performance Event Monitoring scripts on my Linux system?
The library configured with --enable-dtrace and built without error.
</strong>
</span>
<p>
A Linux installation can have SystemTap support for kernel probe points
without including the kernel "utrace" module needed to use userspace
probes. Pass 4 errors can occur when this required userspace