⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a00722.html

📁 opendds 1.2 最新版 面向分布式实时网络编程
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenDDS: OpenDDS::DCPS::ThreadSynch Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
    <li>
      <form action="search.php" method="get">
        <table cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
          </tr>
        </table>
      </form>
    </li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="a01301.html">OpenDDS</a>::<a class="el" href="a01275.html">DCPS</a>::<a class="el" href="a00722.html">ThreadSynch</a></div>
<h1>OpenDDS::DCPS::ThreadSynch Class Reference</h1><!-- doxytag: class="OpenDDS::DCPS::ThreadSynch" --><code>#include &lt;ThreadSynch.h&gt;</code>
<p>
Inheritance diagram for OpenDDS::DCPS::ThreadSynch:<p><center><img src="a02837.png" border="0" usemap="#a02838" alt="Inheritance graph"></center>
<map name="a02838">
<area href="a00589.html" shape="rect" coords="6,81,208,105" alt="">
<area href="a00617.html" shape="rect" coords="232,81,504,105" alt="">
<area href="a00622.html" shape="rect" coords="528,81,734,105" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for OpenDDS::DCPS::ThreadSynch:<p><center><img src="a02839.png" border="0" usemap="#a02840" alt="Collaboration graph"></center>
<map name="a02840">
<area href="a00725.html" shape="rect" coords="6,7,275,31" alt="">
<area href="a00723.html" shape="rect" coords="299,7,582,31" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="a00091.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#90de2f3018faacb30f22933604b450db">~ThreadSynch</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#b299e9e92784eda631a026e9ffe786a9">register_worker</a> (<a class="el" href="a00725.html">ThreadSynchWorker</a> *worker)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#4bfc052934bd9714dcd1f51a885f3730">unregister_worker</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Our owner, the worker_, is breaking our relationship.  <a href="#4bfc052934bd9714dcd1f51a885f3730"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#aac7bf1454747f51275f0535106ee0c8">work_available</a> ()=0</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#77ded5698fb911da8ac688ce29373f67">ThreadSynch</a> (<a class="el" href="a00723.html">ThreadSynchResource</a> *resource)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00725.html#44c251f9e23147845a026416b0d76ec2">ThreadSynchWorker::WorkOutcome</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#425c50571eb48e07905ed1ed33e795b0">wait_on_clogged_resource</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#387f3bdf868428d8d976f29a7516df1f">register_worker_i</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#978c052f9ac9b46fa68fe2ca7bc8699f">unregister_worker_i</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00725.html">ThreadSynchWorker</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#4a3df08a4dacd36c2290cc9a8ddbe91e">worker_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00723.html">ThreadSynchResource</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00722.html#c07041cd4cb8f925427e4675631cbce5">resource_</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This class is the base class for different <a class="el" href="a00722.html">ThreadSynch</a> stratege, currently only the thread per connection strategy is implemented and used.<p>
Notes for object ownership: 1) Pointer to <a class="el" href="a00759.html">TransportSendStrategy</a> object (as <a class="el" href="a00725.html">ThreadSynchWorker</a>) directly but not reference counted. It won't have access problem during it lifetime because the <a class="el" href="a00759.html">TransportSendStrategy</a> object owns this <a class="el" href="a00722.html">ThreadSynch</a> object. 2) The <a class="el" href="a00722.html">ThreadSynch</a> object is created by the <a class="el" href="a00723.html">ThreadSynchResource</a> object and it owns the <a class="el" href="a00723.html">ThreadSynchResource</a> object. 
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="90de2f3018faacb30f22933604b450db"></a><!-- doxytag: member="OpenDDS::DCPS::ThreadSynch::~ThreadSynch" ref="90de2f3018faacb30f22933604b450db" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">OpenDDS::DCPS::ThreadSynch::~ThreadSynch           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="77ded5698fb911da8ac688ce29373f67"></a><!-- doxytag: member="OpenDDS::DCPS::ThreadSynch::ThreadSynch" ref="77ded5698fb911da8ac688ce29373f67" args="(ThreadSynchResource *resource)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ACE_INLINE OpenDDS::DCPS::ThreadSynch::ThreadSynch           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00723.html">ThreadSynchResource</a> *&nbsp;</td>
          <td class="paramname"> <em>resource</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Note that we allow the <a class="el" href="a00723.html">ThreadSynchResource</a> pointer to be NULL to support the <a class="el" href="a00589.html">NullSynch</a> case. 
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="6d3e68463700aec7b2f4bc795689a586"></a><!-- doxytag: member="OpenDDS::DCPS::ThreadSynch::perform_work" ref="6d3e68463700aec7b2f4bc795689a586" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ACE_INLINE <a class="el" href="a00725.html#44c251f9e23147845a026416b0d76ec2">OpenDDS::DCPS::ThreadSynchWorker::WorkOutcome</a> OpenDDS::DCPS::ThreadSynch::perform_work           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This will tell the worker_ to <a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work()</a>. A return value of 0 means that the <a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work()</a> did all the work necessary, and we shouldn't ask it to <a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work()</a> again, unless we receive another <a class="el" href="a00722.html#aac7bf1454747f51275f0535106ee0c8">work_available()</a> call. It won't hurt if we call <a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work()</a> and it has nothing to do - it will immediately return 0 to indicate it has nothing more to do (at the moment). A return value of 1 means that the <a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work()</a> completed, and there is still more work it could do. The <a class="el" href="a00722.html#6d3e68463700aec7b2f4bc795689a586">perform_work()</a> should be called again in this case. 
</div>
</div><p>
<a class="anchor" name="b299e9e92784eda631a026e9ffe786a9"></a><!-- doxytag: member="OpenDDS::DCPS::ThreadSynch::register_worker" ref="b299e9e92784eda631a026e9ffe786a9" args="(ThreadSynchWorker *worker)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ACE_INLINE int OpenDDS::DCPS::ThreadSynch::register_worker           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00725.html">ThreadSynchWorker</a> *&nbsp;</td>
          <td class="paramname"> <em>worker</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -