mirror of
https://github.com/yasuhirokimura/db18
synced 2026-06-08 18:29:23 +00:00
117 lines
5.1 KiB
HTML
117 lines
5.1 KiB
HTML
<?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>Using transactions in dbstl</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="stl.html" title="Chapter 7. Standard Template Library API" />
|
||
<link rel="prev" href="stl_db_advanced_usage.html" title="Using advanced Berkeley DB features with dbstl" />
|
||
<link rel="next" href="stl_mt_usage.html" title="Using dbstl in multithreaded applications" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 18.1.40</p>
|
||
</div>
|
||
<table width="100%" summary="Navigation header">
|
||
<tr>
|
||
<th colspan="3" align="center">Using transactions in dbstl</th>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%" align="left"><a accesskey="p" href="stl_db_advanced_usage.html">Prev</a> </td>
|
||
<th width="60%" align="center">Chapter 7. Standard Template Library API</th>
|
||
<td width="20%" align="right"> <a accesskey="n" href="stl_mt_usage.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="stl_txn_usage"></a>Using transactions in dbstl</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
When using transactions with dbstl, you must call the dbstl
|
||
transaction functions instead of the corresponding methods
|
||
from the Berkeley DB C or C++ transaction API. That is, you
|
||
must use <code class="methodname">dbstl::begin_txn()</code>,
|
||
<code class="methodname">dbstl::commit_txn()</code> and
|
||
<code class="methodname">dbstl::abort_txn()</code> in order to
|
||
begin/commit/abort transactions.
|
||
</p>
|
||
<p>
|
||
A container can be configured to use auto commit by setting
|
||
the <a href="../api_reference/C/envset_flags.html#envset_flags_DB_AUTO_COMMIT" class="olink">DB_AUTO_COMMIT</a> flag when the environment or database
|
||
handle is opened. In this case, any container method that
|
||
supports auto commit will automatically form an independent
|
||
transaction if the method is not in an external transactional
|
||
context; Otherwise, the operation will become part of that
|
||
transaction.
|
||
</p>
|
||
<p>
|
||
You can configure the flags used internally by dbstl when
|
||
it is creating and committing these independent transactions
|
||
required by auto commit. To do so, use the
|
||
<code class="methodname">db_container::set_txn_begin_flags()</code>
|
||
and/or
|
||
<code class="methodname">db_container::set_commit_flags()</code>
|
||
methods.
|
||
</p>
|
||
<p>
|
||
When a transaction is committed or aborted, dbstl will
|
||
automatically close any cursors opened for use by the
|
||
transaction. For this reason, any iterators opened within the
|
||
transaction context should not be used after the transaction
|
||
commits or aborts.
|
||
</p>
|
||
<p>
|
||
You can use nested transactions explicitly and externally,
|
||
by calling <code class="methodname">dbstl::begin_txn()</code> in a
|
||
context already operating under the protection of a
|
||
transaction. But you can not designate which transaction is
|
||
the parent transaction. The parent transaction is
|
||
automatically the most recently created and unresolved
|
||
transaction in current thread.
|
||
</p>
|
||
<p>
|
||
It is also acceptable to use explicit transactions in a
|
||
container configured for auto commit. The operation performed
|
||
by the method will become part of the provided external
|
||
transaction.
|
||
</p>
|
||
<p>
|
||
Finally, transactions and iterators cannot be shared among
|
||
multiple threads. That is, they are not free-threaded, or
|
||
thread-safe.
|
||
</p>
|
||
</div>
|
||
<div class="navfooter">
|
||
<hr />
|
||
<table width="100%" summary="Navigation footer">
|
||
<tr>
|
||
<td width="40%" align="left"><a accesskey="p" href="stl_db_advanced_usage.html">Prev</a> </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="u" href="stl.html">Up</a>
|
||
</td>
|
||
<td width="40%" align="right"> <a accesskey="n" href="stl_mt_usage.html">Next</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="40%" align="left" valign="top">Using advanced Berkeley DB
|
||
features with dbstl </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="h" href="index.html">Home</a>
|
||
</td>
|
||
<td width="40%" align="right" valign="top"> Using dbstl in multithreaded
|
||
applications</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|