You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by bu...@apache.org on 2014/05/03 19:24:00 UTC
svn commit: r907930 - in /websites/staging/jena/trunk/content: ./
documentation/tdb/tdb_transactions.html
Author: buildbot
Date: Sat May 3 17:24:00 2014
New Revision: 907930
Log:
Staging update by buildbot for jena
Modified:
websites/staging/jena/trunk/content/ (props changed)
websites/staging/jena/trunk/content/documentation/tdb/tdb_transactions.html
Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat May 3 17:24:00 2014
@@ -1 +1 @@
-1591284
+1592253
Modified: websites/staging/jena/trunk/content/documentation/tdb/tdb_transactions.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/tdb/tdb_transactions.html (original)
+++ websites/staging/jena/trunk/content/documentation/tdb/tdb_transactions.html Sat May 3 17:24:00 2014
@@ -288,9 +288,34 @@ dataset.</p>
<h2 id="multi-threaded-use">Multi-threaded use</h2>
-<p>Each dataset object has one transaction active at a time.
-The usual idiom within multi-threaded applications is to have
+<p>Each dataset object has one transaction active at a time per thread.
+A dataset object can be used by different threads, with independent transactions.</p>
+<p>The usual idiom within multi-threaded applications is to have
one dataset per thread, and so there is one transaction per thread.</p>
+<p>Either:</p>
+<div class="codehilite"><pre> <span class="o">//</span> <span class="n">Create</span> <span class="n">a</span> <span class="n">dataset</span> <span class="n">and</span> <span class="n">keep</span> <span class="n">it</span> <span class="n">globally</span><span class="p">.</span>
+ <span class="n">Dataset</span> <span class="n">dataset</span> <span class="p">=</span> <span class="n">TDBFactory</span><span class="p">.</span><span class="n">createDataset</span><span class="p">(</span><span class="n">location</span><span class="p">)</span> <span class="p">;</span>
+</pre></div>
+
+
+<p>Thread 1:</p>
+<div class="codehilite"><pre> <span class="n">dataset</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">ReadWrite</span><span class="p">.</span><span class="n">WRITE</span><span class="p">)</span> <span class="p">;</span>
+ <span class="k">try</span> <span class="p">{</span>
+ <span class="p">...</span>
+ <span class="n">dataset</span><span class="p">.</span><span class="n">commit</span><span class="p">()</span> <span class="p">;</span>
+ <span class="p">}</span> <span class="n">finally</span> <span class="p">{</span> <span class="n">dataset</span><span class="p">.</span><span class="k">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">}</span>
+</pre></div>
+
+
+<p>Thread 2:</p>
+<div class="codehilite"><pre> <span class="n">dataset</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">ReadWrite</span><span class="p">.</span><span class="n">READ</span><span class="p">)</span> <span class="p">;</span>
+ <span class="k">try</span> <span class="p">{</span>
+ <span class="p">...</span>
+ <span class="p">}</span> <span class="n">finally</span> <span class="p">{</span> <span class="n">dataset</span><span class="p">.</span><span class="k">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">}</span>
+</pre></div>
+
+
+<p>or create a dataset object on the thread (the case above is preferred):</p>
<p>Thread 1:</p>
<div class="codehilite"><pre> <span class="n">Dataset</span> <span class="n">dataset</span> <span class="p">=</span> <span class="n">TDBFactory</span><span class="p">.</span><span class="n">createDataset</span><span class="p">(</span><span class="n">location</span><span class="p">)</span> <span class="p">;</span>
<span class="n">dataset</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">ReadWrite</span><span class="p">.</span><span class="n">WRITE</span><span class="p">)</span> <span class="p">;</span>
@@ -312,10 +337,6 @@ one dataset per thread, and so there is
<p>Each thread has a separate <code>dataset</code> object; these safely share the
same storage but have independent transactions.</p>
-<p>While it is possible to share a transaction between multiple
-threads, this is not encouraged. Applications needing to do so must
-ensure that only one thread starts the transaction, via a <code>Dataset</code> object,
-and that all threads are acting "multiple reader OR single writer". </p>
<h2 id="multi-jvm">Multi JVM</h2>
<p>Multiple applications, running in multiple JVMs, using the same
file databases is not supported. There must be a single JVM