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