diff options
Diffstat (limited to 'docs/programmer_reference/program_faq.html')
| -rw-r--r-- | docs/programmer_reference/program_faq.html | 116 |
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->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> |
