<span class="q">&nbsp; Hello Doug,
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace"><font size="1"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Subject: </span><span style="FONT-SIZE: 10pt">ACE_RW_Process_Mutex in single writer and multiple readers</span><span style="FONT-SIZE: 9.5pt; FONT-FAMILY: Arial"></span></font></font></p>
<pre><font face="courier new,monospace"><font size="1"><span style="FONT-FAMILY: Arial">ACE VERSION</span>: 5.5.8</font></font></pre>
<div><font face="courier new,monospace"><font size="1"><span style="FONT-FAMILY: Arial">HOST MACHINE and OPERATING SYSTEM</span>:</font></font></div>
<div><font face="courier new,monospace" size="1">Windows XP Professional and Enterprise Linux 5.0</font></div><pre><font face="courier new,monospace" size="1">Version 2002</font></pre><pre><font face="courier new,monospace" size="1">TARGET MACHINE and OPERATING SYSTEM, if different from HOST:NO</font></pre>
<pre><font face="courier new,monospace"><font size="1"><span style="FONT-FAMILY: Arial">COMPILER NAME AND VERSION</span> (AND PATCHLEVEL):</font></font></pre><pre><font face="courier new,monospace" size="1">Visual studio 2005</font></pre>

<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace"><font size="1"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">THE $ACE_ROOT/ace/config.h FILE </span><span style="FONT-SIZE: 9.5pt; FONT-FAMILY: Arial"></span></font></font></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">#include &quot;ace/config-win32.h&quot;&nbsp;&nbsp; for windows</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">#include &quot;ace/config-linux.h&quot;&nbsp;&nbsp; for linux</font></font></span></p><pre><font face="courier new,monospace"><font size="1"><span style="FONT-FAMILY: Arial">DOES THE PROBLEM AFFECT</span>:</font></font></pre>
<pre><font face="courier new,monospace" size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMPILATION? &nbsp; NO</font></pre><pre><font face="courier new,monospace" size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINKING?&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; NO</font></pre><pre><font face="courier new,monospace" size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXECUTION?&nbsp;&nbsp;&nbsp;&nbsp; YES</font></pre>
<pre><font face="courier new,monospace" size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHER &nbsp;</font></pre><pre><font face="courier new,monospace" size="1">&nbsp;&nbsp;&nbsp; <span style="FONT-FAMILY: Arial">SYNOPSIS</span>:</font></pre>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Use of ACE_RW_Process_Mutex.I developed a very simple program which needs to be extended for Multiple readers and single writer ( shared memory concept using a Hash Map with allocator)</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Even a single Reader and single writer are not getting syncronized.Please provide with a sample program of ACE_RW_Process_Mutex.</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace"><font size="1"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span><span style="FONT-SIZE: 9.5pt; FONT-FAMILY: Arial"></span></font></font></p><pre>
<font face="courier new,monospace"><font size="1"><span style="FONT-FAMILY: Arial">DESCRIPTION</span>:</font></font></pre></span><span class="q"><pre><font face="courier new,monospace" size="1">After having a look into ACE_ROOT/examples/Threads ,I implemented the following code using ACE_RW_Process_Mutex. and run in both Windows and linux5.0. But in both the cases the synchronization is not happening .</font></pre>
</span>
<div><font face="courier new,monospace" size="1">Yes I have tried with ACE_Process_Mutex.Its working Fine in Windows and linux.I m attaching the code of ACE_Process_Mutex along with its output<span>&nbsp; </span>and also of ACE_RW_Process_Mutex along with its output</font></div>

<div><font face="Courier New" size="1"></font>&nbsp;</div>
<div><font face="Courier New" size="1">The Only change i did in the below code while using is - use of ACE_Process_Mutex in place of ACE_RW_Process_Mutex in the higlighted area.</font></div><pre><font face="courier new,monospace" size="1">The Code is written as below<span>&nbsp; </span>(WITH ACE_RW_Process_Mutex)</font></pre>
<span class="q"><pre><font face="courier new,monospace"><font size="1">int ACE_TMAIN (int argc, ACE_TCHAR *argv[])</font></font></pre>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">{</font></font></span></p></span>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">int count =0;</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">float ltime=0;</font></font></span></p><span class="q">
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; <font style="BACKGROUND-COLOR: #ffff33">ACE_RW_Process_Mutex</font> m_RWMutex(ACE_TEXT(&quot;MyMutex&quot;));</font></font></span></p>
</span>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; if (agrc == 1)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// For server which is writing</font></font></span></p><span class="q">
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; {</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (1)</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (m_RWMutex.acquire_write() == 0)</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></font></span></p></span>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>ltime = ::GetTickCount();</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_OS::printf(&quot;Writer acquired...%d<span>&nbsp; </span>at: %f\n&quot;,count++,ltime);</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_OS::sleep(2);</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>ltime = ::GetTickCount();</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_OS::printf(&quot;Writer releasing... ...%d<span>&nbsp; </span>at: %f\n&quot;,count++,ltime);</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_RWMutex.release();</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; }</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; else<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//For Client which is reading </font></font></span></p><span class="q">
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; {</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (1)</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (m_RWMutex.acquire_read() == 0)</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></font></span></p></span>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ltime = ::GetTickCount(); </font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp; </span>ACE_OS::printf(&quot;Reader acquired... ...%d<span>&nbsp; </span>at: %f\n&quot;,count++,ltime);</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_OS::sleep(2);</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>ltime = ::GetTickCount();</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_OS::printf(&quot;Reader releasing...%d<span>&nbsp; </span>at: %f\n&quot;,count++,ltime);</font></font></span></p>
<span class="q">
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_RWMutex.release();</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; }</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">&nbsp;&nbsp;&nbsp; return 0;</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">}</font></font></span></p></span><pre><font face="courier new,monospace" size="1">output is like this(WITH ACE_RW_Process_Mutex):</font></pre>
<pre><font face="courier new,monospace" size="1">Writer </font></pre>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>0 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88110592</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>0 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88112592</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>1<span>&nbsp; </span><span>&nbsp; </span>at<span>&nbsp;&nbsp; </span>88112592</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp; </span><span></span>at<span>&nbsp;&nbsp; </span>88114592</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>2<span>&nbsp; </span><span>&nbsp; </span>at<span>&nbsp;&nbsp; </span>88114592</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>2<span>&nbsp; </span><span>&nbsp; </span>at<span>&nbsp;&nbsp; </span>88116592</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>3 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88116592</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released <span>&nbsp;&nbsp;&nbsp;</span>3 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88118592</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">&nbsp;</font></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">Reader</font></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>0<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88112872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader released<span>&nbsp;&nbsp; </span>0<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88114872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88114872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader released<span>&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88116872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>2<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88116872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader released<span>&nbsp;&nbsp; </span>2<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88118872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>3<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88118872</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">&nbsp;</font></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">&nbsp;</font></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">output is like this (WITH ACE_Process_Mutex):</font></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">Writer </font></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>0 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp;&nbsp; </span>88560984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>0 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88562984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>1<span>&nbsp; </span><span>&nbsp; </span>at<span>&nbsp;&nbsp; </span>88562984</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp; </span><span></span>at<span>&nbsp;&nbsp; </span>88564984</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>2<span>&nbsp; </span><span>&nbsp; </span>at<span>&nbsp;&nbsp; </span>88566984</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>2<span>&nbsp; </span><span>&nbsp; </span>at <span>&nbsp;&nbsp;</span>88568984</font></font></span></p>

<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer acquired<span>&nbsp;&nbsp;&nbsp; </span>3 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88570984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">writer released<span>&nbsp;&nbsp;&nbsp; </span>3 <span>&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88572984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">&nbsp;</font></p>
<p style="MARGIN: 0in 0in 0pt"><font face="courier new,monospace" size="1">Reader</font></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>0<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88564984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader released<span>&nbsp;&nbsp; </span>0<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88566984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88568984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader released<span>&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88570984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>2<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88572984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader released<span>&nbsp;&nbsp; </span>2<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88574984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace"><font size="1">Reader acquired<span>&nbsp;&nbsp; </span>3<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88576984</font></font></span></p>
<p style="MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 10pt"><font face="courier new,monospace" size="1">Reader released<span>&nbsp;&nbsp; </span>3<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>at<span>&nbsp;&nbsp; </span>88578984</font></span></p>
<div>Thanks</div>
<div>Ruchita<br><br>&nbsp;</div>
<div><span class="gmail_quote">On 3/3/08, <b class="gmail_sendername">Douglas C. Schmidt</b> &lt;<a href="mailto:schmidt@dre.vanderbilt.edu">schmidt@dre.vanderbilt.edu</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks for using the PRF.<br><br>&gt;ACE VERSION: 5.5.8<br>&gt;<br>&gt;HOST MACHINE and OPERATING SYSTEM:<br>
&gt;<br>&gt;<br>&gt;<br>&gt;Windows XP Professional and Enterprise Linux 5.0<br>&gt;<br>&gt;Version 2002<br>&gt;<br>&gt;TARGET MACHINE and OPERATING SYSTEM, if different from HOST:NO<br>&gt;<br>&gt;COMPILER NAME AND VERSION (AND PATCHLEVEL):<br>
&gt;<br>&gt;Visual studio 2005<br>&gt;<br>&gt;THE $ACE_ROOT/ace/config.h FILE<br>&gt;<br>&gt;#include &quot;ace/config-win32.h&quot;&nbsp;&nbsp; for windows<br>&gt;<br>&gt;#include &quot;ace/config-linux.h&quot;&nbsp;&nbsp; for linux<br>&gt;<br>
&gt;DOES THE PROBLEM AFFECT:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPILATION?&nbsp;&nbsp; NO<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LINKING?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXECUTION?&nbsp;&nbsp;&nbsp;&nbsp; YES<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OTHER<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;SYNOPSIS:<br>&gt;<br>
&gt;Use of ACE_RW_Process_Mutex.I developed a very simple program which needs to<br>&gt;be extended for Multiple readers and single writer ( shared memory concept<br>&gt;using a Hash Map with allocator)<br>&gt;<br>&gt;Even a single Reader and single writer are not getting<br>
&gt;syncronized.Pleaseprovide with a sample program of<br>&gt;ACE_RW_Process_Mutex.<br><br>Have you tried running this using ACE_Process_Mutex instead of<br>ACE_RW_Process_Mutex to see what happens?<br><br>Thanks,<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Doug<br><br>&gt;<br>&gt;<br>&gt;DESCRIPTION:<br>&gt;<br>&gt;After having a look into ACE_ROOT/examples/Threads ,I implemented the<br>&gt;following code using ACE_RW_Process_Mutex. and run in both Windows and<br>&gt;linux5.0. But in both the cases the synchronization is not happening .<br>
&gt;<br>&gt;<br>&gt;<br>&gt;The Code is written as below<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;int ACE_TMAIN (int argc, ACE_TCHAR *argv[])<br>&gt;<br>&gt;{<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;ACE_RW_Process_Mutex m_RWMutex(ACE_TEXT(&quot;MyMutex&quot;));<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;if (agrc == 1)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (1)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m_RWMutex.acquire_write() == 0)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::printf(&quot;Writer acquired...\n&quot;);<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::sleep(2);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::printf(&quot;Writer releasing...\n&quot;);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RWMutex.release();<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (1)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m_RWMutex.acquire_read() == 0)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&gt;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::printf(&quot;Writer acquired...\n&quot;);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::sleep(2);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::printf(&quot;Writer releasing...\n&quot;);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_RWMutex.release();<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br>&gt;<br>&gt;}<br>&gt;<br>&gt;------=_Part_5765_23997741.1204541871901<br>&gt;Content-Type: text/html; charset=ISO-8859-1<br>
&gt;Content-Transfer-Encoding: 7bit<br>&gt;Content-Disposition: inline<br>&gt;<br>&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;To: &lt;/font&gt;&lt;a href=&quot;mailto:<a href="mailto:ace-bugs@cs.wustl.edu">ace-bugs@cs.wustl.edu</a>&quot; target=&quot;_blank&quot;&gt;&lt;font size=&quot;2&quot;&gt;<a href="mailto:ace-bugs@cs.wustl.edu">ace-bugs@cs.wustl.edu</a>&lt;/font&gt;&lt;/a&gt;&lt;/pre&gt;<br>
&gt;&lt;div&gt;&lt;font size=&quot;2&quot;&gt;Please Ignore my previous mail ,the code was not complete.&lt;/font&gt;&lt;/div&gt;<br>&gt;&lt;div&gt;&lt;font size=&quot;2&quot;&gt;Subject: ACE_RW_Process_Mutex in single writer and multiple readers&lt;/font&gt;&lt;/div&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;ACE VERSION: 5.5.8&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;HOST MACHINE and OPERATING SYSTEM:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;<br>
&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;Windows XP Professional and Enterprise Linux 5.0&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;Version 2002&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;TARGET MACHINE and OPERATING SYSTEM, if different from HOST:NO&lt;/font&gt;&lt;/pre&gt;<br>
&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;COMPILER NAME AND VERSION (AND PATCHLEVEL):&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;Visual studio 2005&lt;/font&gt;&lt;/pre&gt;<br>&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;THE $ACE_ROOT/ace/config.h FILE &lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;#include &amp;quot;ace/config-win32.h&amp;quot;&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;for windows&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;#include &amp;quot;ace/config-linux.h&amp;quot;&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;for linux&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;<br>
&gt;&lt;font size=&quot;2&quot;&gt;DOES THE PROBLEM AFFECT:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPILATION? &amp;nbsp; NO&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LINKING?&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NO&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXECUTION?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; YES&lt;/font&gt;&lt;/pre&gt;<br>
&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OTHER &amp;nbsp;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYNOPSIS:&lt;/font&gt;&lt;/pre&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;Use of ACE_RW_Process_Mutex.I developed a very simple program which needs to be extended for Multiple readers and single writer ( shared memory concept using a Hash Map with allocator)&lt;/span&gt;&lt;/p&gt;<br>
&gt;<br>&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;Even a single Reader and single writer are not getting syncronized.Please provide with a sample program of ACE_RW_Process_Mutex.&lt;/span&gt;&lt;/p&gt;<br>
&gt;<br>&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;DESCRIPTION:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;After having a look into ACE_ROOT/examples/Threads ,I implemented the following code using ACE_RW_Process_Mutex. and run in both Windows and linux5.0. But in both the cases the synchronization is not happening .&lt;/font&gt;&lt;/pre&gt;<br>
&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;The Code is written as below&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;FONT-FAMILY: Arial&quot;&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font size=&quot;2&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/pre&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;int ACE_TMAIN (int argc, ACE_TCHAR *argv[])&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;{&lt;/span&gt;&lt;/p&gt;<br>&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_RW_Process_Mutex m_RWMutex(ACE_TEXT(&amp;quot;MyMutex&amp;quot;));&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (agrc == 1)&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_RWMutex.acquire_write() == 0)&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_OS::printf(&amp;quot;Writer acquired...\n&amp;quot;);&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_OS::sleep(2);&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_OS::printf(&amp;quot;Writer releasing...\n&amp;quot;);&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_RWMutex.release();&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_RWMutex.acquire_read() == 0)&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_OS::printf(&amp;quot;Writer acquired...\n&amp;quot;);&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_OS::sleep(2);&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACE_OS::printf(&amp;quot;Writer releasing...\n&amp;quot;);&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_RWMutex.release();&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/span&gt;&lt;/p&gt;<br>
&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;br style=&quot;mso-special-character: line-break&quot;&gt;&lt;/pre&gt;<br>
&gt;<br>&gt;------=_Part_5765_23997741.1204541871901--<br>&gt;<br><br><br>--<br>Dr. Douglas C. Schmidt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Professor and Associate Chair<br>Electrical Engineering and Computer Science&nbsp;&nbsp;TEL: (615) 343-8197<br>
Vanderbilt University&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WEB: <a href="http://www.dre.vanderbilt.edu/~schmidt">www.dre.vanderbilt.edu/~schmidt</a><br>Nashville, TN 37203&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NET: <a href="mailto:d.schmidt@vanderbilt.edu">d.schmidt@vanderbilt.edu</a><br>
</blockquote></div><br>