summaryrefslogtreecommitdiff
path: root/docs/programmer_reference/program_faq.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/programmer_reference/program_faq.html')
-rw-r--r--docs/programmer_reference/program_faq.html116
1 files changed, 74 insertions, 42 deletions
diff --git a/docs/programmer_reference/program_faq.html b/docs/programmer_reference/program_faq.html
index 39628368..c15e4ff1 100644
--- a/docs/programmer_reference/program_faq.html
+++ b/docs/programmer_reference/program_faq.html
@@ -14,7 +14,7 @@
<body>
<div xmlns="" class="navheader">
<div class="libver">
- <p>Library Version 11.2.5.3</p>
+ <p>Library Version 12.1.6.1</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
@@ -22,9 +22,7 @@
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="program_perfmon.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 15. 
- Programmer Notes
- </th>
+ <th width="60%" align="center">Chapter 15.  Programmer Notes </th>
<td width="20%" align="right"> <a accesskey="n" href="lock.html">Next</a></td>
</tr>
</table>
@@ -41,45 +39,80 @@
<div class="orderedlist">
<ol type="1">
<li>
- <span class="bold">
- <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>
+ <p>
+ <span class="bold"><strong>What priorities should
+ threads/tasks executing Berkeley DB functions be
+ given?</strong></span>
+ </p>
+ <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>
- <span class="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 <a href="../api_reference/C/dbc.html" class="olink">DBC</a> and <a href="../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>
+ <p>
+ <span class="bold"><strong>Why isn't the C++ API exception
+ safe?</strong></span>
+ </p>
+ <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 <a href="../api_reference/C/dbc.html" class="olink">DBC</a> and <a href="../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>
+ <p>
+ <span class="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 was configured with
+ <code class="literal">--enable-dtrace</code> and built
+ without error. </strong></span>
+ </p>
+ <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 support
+ is not present.
+ </p>
</li>
<li>
- <span class="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
- support is not present.
- </p>
+ <span class="bold"><strong> I have a program with multiple
+ threads running on multi-core systems, and it uses
+ a shared DB handle for all the threads. The
+ program does not behave as well as I expect and I
+ see a lot of contention on the dbp-&gt;mutex, what
+ should I do to reduce this contention ?
+ </strong></span>
+ </p>
+ <p>
+ When running multi-threaded program on a
+ multi-core/multi-processor system, we suggest using a
+ DB handle per thread instead of using a shared handle
+ accorss threads. Since many operations(like creating
+ cursors) requires to lock the DB handle first, and if
+ using a shared handle, there could be a lot of lock
+ contention on the handle.
+ </p>
</li>
</ol>
</div>
@@ -95,13 +128,12 @@ contains the wrapper object.</p>
<td width="40%" align="right"> <a accesskey="n" href="lock.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Performance Event Monitoring </td>
+ <td width="40%" align="left" valign="top">Performance Event
+ Monitoring </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 16. 
- The Locking Subsystem
- </td>
+ <td width="40%" align="right" valign="top"> Chapter 16.  The Locking Subsystem </td>
</tr>
</table>
</div>