| <!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> |
| <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.5"/> |
| <title>Apache Mesos: 3rdparty/stout/include/stout/synchronized.hpp File 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="doxygen.css" rel="stylesheet" type="text/css" /> |
| </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 style="padding-left: 0.5em;"> |
| <div id="projectname">Apache Mesos |
| </div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.5 --> |
| <div id="navrow1" class="tabs"> |
| <ul class="tablist"> |
| <li><a href="index.html"><span>Main Page</span></a></li> |
| <li><a href="pages.html"><span>Related Pages</span></a></li> |
| <li><a href="namespaces.html"><span>Namespaces</span></a></li> |
| <li><a href="annotated.html"><span>Classes</span></a></li> |
| <li class="current"><a href="files.html"><span>Files</span></a></li> |
| <li><a href="examples.html"><span>Examples</span></a></li> |
| </ul> |
| </div> |
| <div id="navrow2" class="tabs2"> |
| <ul class="tablist"> |
| <li><a href="files.html"><span>File List</span></a></li> |
| <li><a href="globals.html"><span>File Members</span></a></li> |
| </ul> |
| </div> |
| <div id="nav-path" class="navpath"> |
| <ul> |
| <li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_aa547de1d719d14adccfca1dfb1735b3.html">stout</a></li><li class="navelem"><a class="el" href="dir_1a1b923d951dd999d43396870333fc33.html">include</a></li><li class="navelem"><a class="el" href="dir_dbd52553d038069c1ed93e3477ea333d.html">stout</a></li> </ul> |
| </div> |
| </div><!-- top --> |
| <div class="header"> |
| <div class="summary"> |
| <a href="#nested-classes">Classes</a> | |
| <a href="#define-members">Macros</a> | |
| <a href="#func-members">Functions</a> </div> |
| <div class="headertitle"> |
| <div class="title">synchronized.hpp File Reference</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| <div class="textblock"><code>#include <atomic></code><br/> |
| <code>#include <condition_variable></code><br/> |
| <code>#include <mutex></code><br/> |
| <code>#include <type_traits></code><br/> |
| <code>#include <glog/logging.h></code><br/> |
| <code>#include <<a class="el" href="preprocessor_8hpp_source.html">stout/preprocessor.hpp</a>></code><br/> |
| </div> |
| <p><a href="synchronized_8hpp_source.html">Go to the source code of this file.</a></p> |
| <table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> |
| Classes</h2></td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classSynchronized.html">Synchronized< T ></a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> |
| Macros</h2></td></tr> |
| <tr class="memitem:ab321ce868d1f56a473a4bc3fac9a45da"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#ab321ce868d1f56a473a4bc3fac9a45da">SYNCHRONIZED_PREFIX</a>   <a class="el" href="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0">CAT</a>(__synchronizer_, __LINE__)</td></tr> |
| <tr class="separator:ab321ce868d1f56a473a4bc3fac9a45da"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a7c5f22c44193503d21cedd6e433aa697"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a7c5f22c44193503d21cedd6e433aa697">SYNCHRONIZED_VAR</a>   <a class="el" href="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0">CAT</a>(<a class="el" href="synchronized_8hpp.html#ab321ce868d1f56a473a4bc3fac9a45da">SYNCHRONIZED_PREFIX</a>, _var__)</td></tr> |
| <tr class="separator:a7c5f22c44193503d21cedd6e433aa697"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:af611e06d6b072b3b4eb0dae282676143"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#af611e06d6b072b3b4eb0dae282676143">SYNCHRONIZED_LABEL</a>   <a class="el" href="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0">CAT</a>(<a class="el" href="synchronized_8hpp.html#ab321ce868d1f56a473a4bc3fac9a45da">SYNCHRONIZED_PREFIX</a>, _label__)</td></tr> |
| <tr class="separator:af611e06d6b072b3b4eb0dae282676143"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a3038464a289ad3d8957a761b1795b37b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a3038464a289ad3d8957a761b1795b37b">synchronized</a>(m)</td></tr> |
| <tr class="separator:a3038464a289ad3d8957a761b1795b37b"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> |
| Functions</h2></td></tr> |
| <tr class="memitem:ab47019f16d58f080f2b323b5b586e55d"><td class="memTemplParams" colspan="2">template<typename T > </td></tr> |
| <tr class="memitem:ab47019f16d58f080f2b323b5b586e55d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classSynchronized.html">Synchronized</a>< T > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#ab47019f16d58f080f2b323b5b586e55d">synchronize</a> (T *t)</td></tr> |
| <tr class="separator:ab47019f16d58f080f2b323b5b586e55d"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a4811b9eee17fd0e658196b48663462b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSynchronized.html">Synchronized</a>< std::atomic_flag > </td><td class="memItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a4811b9eee17fd0e658196b48663462b8">synchronize</a> (std::atomic_flag *lock)</td></tr> |
| <tr class="separator:a4811b9eee17fd0e658196b48663462b8"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a4ec79edd13ce87b72eae3ba83b34ad14"><td class="memTemplParams" colspan="2">template<typename T > </td></tr> |
| <tr class="memitem:a4ec79edd13ce87b72eae3ba83b34ad14"><td class="memTemplItemLeft" align="right" valign="top">T * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a4ec79edd13ce87b72eae3ba83b34ad14">synchronized_get_pointer</a> (T **t)</td></tr> |
| <tr class="separator:a4ec79edd13ce87b72eae3ba83b34ad14"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a7b170182b10e3e723c5411e390766518"><td class="memTemplParams" colspan="2">template<typename T > </td></tr> |
| <tr class="memitem:a7b170182b10e3e723c5411e390766518"><td class="memTemplItemLeft" align="right" valign="top">T * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a7b170182b10e3e723c5411e390766518">synchronized_get_pointer</a> (T *t)</td></tr> |
| <tr class="separator:a7b170182b10e3e723c5411e390766518"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a9d854e5436a64744a231418cde397b05"><td class="memTemplParams" colspan="2">template<typename CV , typename Lock > </td></tr> |
| <tr class="memitem:a9d854e5436a64744a231418cde397b05"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a9d854e5436a64744a231418cde397b05">synchronized_wait</a> (CV *cv, Lock *lock)</td></tr> |
| <tr class="memdesc:a9d854e5436a64744a231418cde397b05"><td class="mdescLeft"> </td><td class="mdescRight">Waits on the condition variable associated with 'lock' which has already been synchronized. <a href="#a9d854e5436a64744a231418cde397b05">More...</a><br/></td></tr> |
| <tr class="separator:a9d854e5436a64744a231418cde397b05"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aad5d742a7c6da3c4583b0bbda035e091"><td class="memTemplParams" colspan="2">template<> </td></tr> |
| <tr class="memitem:aad5d742a7c6da3c4583b0bbda035e091"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#aad5d742a7c6da3c4583b0bbda035e091">synchronized_wait</a> (std::condition_variable *cv, std::mutex *mutex)</td></tr> |
| <tr class="separator:aad5d742a7c6da3c4583b0bbda035e091"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a08dea5013e555acfa773b936df5d4e16"><td class="memTemplParams" colspan="2">template<typename Lock > </td></tr> |
| <tr class="memitem:a08dea5013e555acfa773b936df5d4e16"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="synchronized_8hpp.html#a08dea5013e555acfa773b936df5d4e16">synchronized_wait</a> (std::condition_variable_any *cv, Lock *lock)=delete</td></tr> |
| <tr class="memdesc:a08dea5013e555acfa773b936df5d4e16"><td class="mdescLeft"> </td><td class="mdescRight">There is a known bug around 'std::condition_variable_any' in 'libstdc++' distributed 'devtoolset-2', and also general issues around the use of 'std::condition_variable_any' with 'std::recursive_mutex'. <a href="#a08dea5013e555acfa773b936df5d4e16">More...</a><br/></td></tr> |
| <tr class="separator:a08dea5013e555acfa773b936df5d4e16"><td class="memSeparator" colspan="2"> </td></tr> |
| </table> |
| <h2 class="groupheader">Macro Definition Documentation</h2> |
| <a class="anchor" id="a3038464a289ad3d8957a761b1795b37b"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define synchronized</td> |
| <td>(</td> |
| <td class="paramtype"> </td> |
| <td class="paramname">m</td><td>)</td> |
| <td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code" href="classSynchronized.html">Synchronized</a><<span class="keyword">typename</span> std::remove_pointer<decltype(m)>::<a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>> \</div> |
| <div class="line"> <a class="code" href="synchronized_8hpp.html#a7c5f22c44193503d21cedd6e433aa697">SYNCHRONIZED_VAR</a> = ::<a class="code" href="synchronized_8hpp.html#ab47019f16d58f080f2b323b5b586e55d">synchronize</a>(::<a class="code" href="synchronized_8hpp.html#a4ec79edd13ce87b72eae3ba83b34ad14">synchronized_get_pointer</a>(&m))) { \</div> |
| <div class="line"> goto <a class="code" href="synchronized_8hpp.html#af611e06d6b072b3b4eb0dae282676143">SYNCHRONIZED_LABEL</a>; \</div> |
| <div class="line"> } <span class="keywordflow">else</span> <a class="code" href="synchronized_8hpp.html#af611e06d6b072b3b4eb0dae282676143">SYNCHRONIZED_LABEL</a>:</div> |
| <div class="ttc" id="synchronized_8hpp_html_ab47019f16d58f080f2b323b5b586e55d"><div class="ttname"><a href="synchronized_8hpp.html#ab47019f16d58f080f2b323b5b586e55d">synchronize</a></div><div class="ttdeci">Synchronized< T > synchronize(T *t)</div><div class="ttdef"><b>Definition:</b> synchronized.hpp:52</div></div> |
| <div class="ttc" id="synchronized_8hpp_html_a7c5f22c44193503d21cedd6e433aa697"><div class="ttname"><a href="synchronized_8hpp.html#a7c5f22c44193503d21cedd6e433aa697">SYNCHRONIZED_VAR</a></div><div class="ttdeci">#define SYNCHRONIZED_VAR</div><div class="ttdef"><b>Definition:</b> synchronized.hpp:97</div></div> |
| <div class="ttc" id="classSynchronized_html"><div class="ttname"><a href="classSynchronized.html">Synchronized</a></div><div class="ttdef"><b>Definition:</b> synchronized.hpp:27</div></div> |
| <div class="ttc" id="namespacemesos_1_1internal_1_1fs_html_a2343e2642db514496ba8380776487fba"><div class="ttname"><a href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">mesos::internal::fs::type</a></div><div class="ttdeci">Try< uint32_t > type(const std::string &path)</div></div> |
| <div class="ttc" id="synchronized_8hpp_html_a4ec79edd13ce87b72eae3ba83b34ad14"><div class="ttname"><a href="synchronized_8hpp.html#a4ec79edd13ce87b72eae3ba83b34ad14">synchronized_get_pointer</a></div><div class="ttdeci">T * synchronized_get_pointer(T **t)</div><div class="ttdef"><b>Definition:</b> synchronized.hpp:78</div></div> |
| <div class="ttc" id="synchronized_8hpp_html_af611e06d6b072b3b4eb0dae282676143"><div class="ttname"><a href="synchronized_8hpp.html#af611e06d6b072b3b4eb0dae282676143">SYNCHRONIZED_LABEL</a></div><div class="ttdeci">#define SYNCHRONIZED_LABEL</div><div class="ttdef"><b>Definition:</b> synchronized.hpp:98</div></div> |
| </div><!-- fragment --> |
| </div> |
| </div> |
| <a class="anchor" id="af611e06d6b072b3b4eb0dae282676143"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define SYNCHRONIZED_LABEL   <a class="el" href="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0">CAT</a>(<a class="el" href="synchronized_8hpp.html#ab321ce868d1f56a473a4bc3fac9a45da">SYNCHRONIZED_PREFIX</a>, _label__)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ab321ce868d1f56a473a4bc3fac9a45da"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define SYNCHRONIZED_PREFIX   <a class="el" href="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0">CAT</a>(__synchronizer_, __LINE__)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a7c5f22c44193503d21cedd6e433aa697"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">#define SYNCHRONIZED_VAR   <a class="el" href="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0">CAT</a>(<a class="el" href="synchronized_8hpp.html#ab321ce868d1f56a473a4bc3fac9a45da">SYNCHRONIZED_PREFIX</a>, _var__)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Function Documentation</h2> |
| <a class="anchor" id="ab47019f16d58f080f2b323b5b586e55d"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename T > </div> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="classSynchronized.html">Synchronized</a><T> synchronize </td> |
| <td>(</td> |
| <td class="paramtype">T * </td> |
| <td class="paramname"><em>t</em></td><td>)</td> |
| <td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a4811b9eee17fd0e658196b48663462b8"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="classSynchronized.html">Synchronized</a><std::atomic_flag> synchronize </td> |
| <td>(</td> |
| <td class="paramtype">std::atomic_flag * </td> |
| <td class="paramname"><em>lock</em></td><td>)</td> |
| <td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a4ec79edd13ce87b72eae3ba83b34ad14"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename T > </div> |
| <table class="memname"> |
| <tr> |
| <td class="memname">T* synchronized_get_pointer </td> |
| <td>(</td> |
| <td class="paramtype">T ** </td> |
| <td class="paramname"><em>t</em></td><td>)</td> |
| <td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a7b170182b10e3e723c5411e390766518"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename T > </div> |
| <table class="memname"> |
| <tr> |
| <td class="memname">T* synchronized_get_pointer </td> |
| <td>(</td> |
| <td class="paramtype">T * </td> |
| <td class="paramname"><em>t</em></td><td>)</td> |
| <td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a9d854e5436a64744a231418cde397b05"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename CV , typename Lock > </div> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void synchronized_wait </td> |
| <td>(</td> |
| <td class="paramtype">CV * </td> |
| <td class="paramname"><em>cv</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">Lock * </td> |
| <td class="paramname"><em>lock</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Waits on the condition variable associated with 'lock' which has already been synchronized. </p> |
| <p>Currently, the only supported implementation is for 'std::condition_variable' associated with a 'std::mutex'.</p> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">cv</td><td>The condition variable. </td></tr> |
| <tr><td class="paramname">lock</td><td>The lock associated with the condition variable.</td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section pre"><dt>Precondition</dt><dd>'lock' is already owned by the calling thread. </dd></dl> |
| <dl class="section post"><dt>Postcondition</dt><dd>'lock' is still owned by the calling thread.</dd></dl> |
| <dl class="section return"><dt>Returns</dt><dd><a class="el" href="structNothing.html">Nothing</a>. </dd></dl> |
| |
| </div> |
| </div> |
| <a class="anchor" id="aad5d742a7c6da3c4583b0bbda035e091"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<> </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void synchronized_wait </td> |
| <td>(</td> |
| <td class="paramtype">std::condition_variable * </td> |
| <td class="paramname"><em>cv</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">std::mutex * </td> |
| <td class="paramname"><em>mutex</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a08dea5013e555acfa773b936df5d4e16"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename Lock > </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void synchronized_wait </td> |
| <td>(</td> |
| <td class="paramtype">std::condition_variable_any * </td> |
| <td class="paramname"><em>cv</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">Lock * </td> |
| <td class="paramname"><em>lock</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">delete</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>There is a known bug around 'std::condition_variable_any' in 'libstdc++' distributed 'devtoolset-2', and also general issues around the use of 'std::condition_variable_any' with 'std::recursive_mutex'. </p> |
| <p>Hence, this function is currently deleted until both issues are resolved.</p> |
| <dl class="section see"><dt>See Also</dt><dd><a href="https://rhn.redhat.com/errata/RHBA-2014-1035.html">https://rhn.redhat.com/errata/RHBA-2014-1035.html</a> </dd> |
| <dd> |
| <a href="http://stackoverflow.com/questions/11752155/behavior-of-condition-variable-any-when-used-with-a-recursive-mutex">http://stackoverflow.com/questions/11752155/behavior-of-condition-variable-any-when-used-with-a-recursive-mutex</a> </dd></dl> |
| |
| </div> |
| </div> |
| </div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated by  <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/> |
| </a> 1.8.5 |
| </small></address> |
| </body> |
| </html> |