1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Programmer notes FAQ</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
<link rel="up" href="program.html" title="Chapter 15. Programmer Notes" />
<link rel="prev" href="program_perfmon.html" title="Performance Event Monitoring" />
<link rel="next" href="lock.html" title="Chapter 16. The Locking Subsystem" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 12.1.6.1</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Programmer notes FAQ</th>
</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>
<td width="20%" align="right"> <a accesskey="n" href="lock.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="program_faq"></a>Programmer notes FAQ</h2>
</div>
</div>
</div>
<div class="orderedlist">
<ol type="1">
<li>
<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>
<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>
<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>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="program_perfmon.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="program.html">Up</a>
</td>
<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="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>
</tr>
</table>
</div>
</body>
</html>
|