1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 <title>No Wait on Blocks</title> 7 <link rel="stylesheet" href="gettingStarted.css" type="text/css" /> 8 <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /> 9 <link rel="start" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" /> 10 <link rel="up" href="txnconcurrency.html" title="Chapter��4.��Concurrency" /> 11 <link rel="prev" href="readmodifywrite.html" title="Read/Modify/Write" /> 12 <link rel="next" href="reversesplit.html" title="Reverse BTree Splits" /> 13 </head> 14 <body> 15 <div class="navheader"> 16 <table width="100%" summary="Navigation header"> 17 <tr> 18 <th colspan="3" align="center">No Wait on Blocks</th> 19 </tr> 20 <tr> 21 <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a>��</td> 22 <th width="60%" align="center">Chapter��4.��Concurrency</th> 23 <td width="20%" align="right">��<a accesskey="n" href="reversesplit.html">Next</a></td> 24 </tr> 25 </table> 26 <hr /> 27 </div> 28 <div class="sect1" lang="en" xml:lang="en"> 29 <div class="titlepage"> 30 <div> 31 <div> 32 <h2 class="title" style="clear: both"><a id="txnnowait"></a>No Wait on Blocks</h2> 33 </div> 34 </div> 35 </div> 36 <p> 37 Normally when a DB transaction is blocked on a lock request, it 38 must wait until the requested lock becomes available before its 39 thread-of-control can proceed. However, it is possible to configure a 40 transaction handle such that it will report a deadlock rather 41 than wait for the block to clear. 42 </p> 43 <p> 44 You do this on a transaction by transaction basis by specifying 45 46 <span> 47 <code class="literal">DB_TXN_NOWAIT</code> 48 to the 49 <code class="methodname">DB_ENV->txn_begin()</code> 50 51 52 method. 53 </span> 54 55 56 </p> 57 <p> 58 For example: 59 </p> 60 <pre class="programlisting"> /* Get the transaction */ 61 DB_TXN *txn = NULL; 62 ret = envp->txn_begin(envp, NULL, &txn, DB_TXN_NOWAIT); 63 if (ret != 0) { 64 envp->err(envp, ret, "txn_begin failed"); 65 return (EXIT_FAILURE); 66 } 67 .... 68 /* Deadlock detection and exception handling omitted for brevity. */</pre> 69 </div> 70 <div class="navfooter"> 71 <hr /> 72 <table width="100%" summary="Navigation footer"> 73 <tr> 74 <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a>��</td> 75 <td width="20%" align="center"> 76 <a accesskey="u" href="txnconcurrency.html">Up</a> 77 </td> 78 <td width="40%" align="right">��<a accesskey="n" href="reversesplit.html">Next</a></td> 79 </tr> 80 <tr> 81 <td width="40%" align="left" valign="top">Read/Modify/Write��</td> 82 <td width="20%" align="center"> 83 <a accesskey="h" href="index.html">Home</a> 84 </td> 85 <td width="40%" align="right" valign="top">��Reverse BTree Splits</td> 86 </tr> 87 </table> 88 </div> 89 </body> 90</html> 91