<!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>
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/cppdoc/structignite_1_1transactions_1_1TransactionIsolation.html" />

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>&nbsp; Apache Ignite C++: ignite::transactions::TransactionIsolation Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">&nbsp; Apache Ignite C++
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceignite.html">ignite</a></li><li class="navelem"><a class="el" href="namespaceignite_1_1transactions.html">transactions</a></li><li class="navelem"><a class="el" href="structignite_1_1transactions_1_1TransactionIsolation.html">TransactionIsolation</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="structignite_1_1transactions_1_1TransactionIsolation-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ignite::transactions::TransactionIsolation Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Defines different cache transaction isolation levels.  
 <a href="structignite_1_1transactions_1_1TransactionIsolation.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="transaction__consts_8h_source.html">transaction_consts.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a3ac24463ce4e1f63186a974c33c6b3e3"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structignite_1_1transactions_1_1TransactionIsolation.html#a3ac24463ce4e1f63186a974c33c6b3e3">Type</a> { <a class="el" href="structignite_1_1transactions_1_1TransactionIsolation.html#a3ac24463ce4e1f63186a974c33c6b3e3afedbd137a83cadbbff0daae1f10f4c53">READ_COMMITTED</a> = 0, 
<a class="el" href="structignite_1_1transactions_1_1TransactionIsolation.html#a3ac24463ce4e1f63186a974c33c6b3e3a6f7ada83d09adcb5cf6d107c08f88dec">REPEATABLE_READ</a> = 1, 
<a class="el" href="structignite_1_1transactions_1_1TransactionIsolation.html#a3ac24463ce4e1f63186a974c33c6b3e3a8dadab2cb79ed7d2d0ed91f692fa3b27">SERIALIZABLE</a> = 2
 }</td></tr>
<tr class="separator:a3ac24463ce4e1f63186a974c33c6b3e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Defines different cache transaction isolation levels. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a3ac24463ce4e1f63186a974c33c6b3e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ac24463ce4e1f63186a974c33c6b3e3">&#9670;&nbsp;</a></span>Type</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="structignite_1_1transactions_1_1TransactionIsolation.html#a3ac24463ce4e1f63186a974c33c6b3e3">ignite::transactions::TransactionIsolation::Type</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3ac24463ce4e1f63186a974c33c6b3e3afedbd137a83cadbbff0daae1f10f4c53"></a>READ_COMMITTED&#160;</td><td class="fielddoc"><p>Read committed isolation level. </p>
<p>This isolation level means that always a committed value will be provided for read operations. With this isolation level values are always read from cache global memory or persistent store every time a value is accessed. In other words, if the same key is accessed more than once within the same transaction, it may have different value every time since global cache memory may be updated concurrently by other threads. </p>
</td></tr>
<tr><td class="fieldname"><a id="a3ac24463ce4e1f63186a974c33c6b3e3a6f7ada83d09adcb5cf6d107c08f88dec"></a>REPEATABLE_READ&#160;</td><td class="fielddoc"><p>Repeatable read isolation level. </p>
<p>This isolation level means that if a value was read once within transaction, then all consecutive reads will provide the same in-transaction value. With this isolation level accessed values are stored within in-transaction memory, so consecutive access to the same key within the same transaction will always return the value that was previously read or updated within this transaction. If concurrency is ::IGNITE_TX_CONCURRENCY_PESSIMISTIC, then a lock on the key will be acquired prior to accessing the value. </p>
</td></tr>
<tr><td class="fieldname"><a id="a3ac24463ce4e1f63186a974c33c6b3e3a8dadab2cb79ed7d2d0ed91f692fa3b27"></a>SERIALIZABLE&#160;</td><td class="fielddoc"><p>Serializable isolation level. </p>
<p>This isolation level means that all transactions occur in a completely isolated fashion, as if all transactions in the system had executed serially, one after the other. Read access with this level happens the same way as with ::IGNITE_TX_ISOLATION_REPEATABLE_READ level. However, in ::IGNITE_TX_CONCURRENCY_OPTIMISTIC mode, if some transactions cannot be serially isolated from each other, then one winner will be picked and the other transactions in conflict will result in <a class="el" href="classignite_1_1IgniteError.html" title="Ignite error information. ">IgniteError</a> being thrown. </p>
</td></tr>
</table>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="transaction__consts_8h_source.html">transaction_consts.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Dec 9 2020 14:26:55 for &nbsp; Apache Ignite C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
