class_physics_lock.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=11"/>
  6. <meta name="generator" content="Doxygen 1.12.0"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>Jolt Physics: PhysicsLock Class Reference</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <script type="text/javascript" src="clipboard.js"></script>
  13. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript" src="resize.js"></script>
  17. <script type="text/javascript" src="cookie.js"></script>
  18. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  19. <script type="text/javascript" src="search/searchdata.js"></script>
  20. <script type="text/javascript" src="search/search.js"></script>
  21. <script type="text/x-mathjax-config">
  22. MathJax.Hub.Config({
  23. extensions: ["tex2jax.js"],
  24. jax: ["input/TeX","output/HTML-CSS"],
  25. });
  26. </script>
  27. <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
  28. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  29. </head>
  30. <body>
  31. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  32. <div id="titlearea">
  33. <table cellspacing="0" cellpadding="0">
  34. <tbody>
  35. <tr id="projectrow">
  36. <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
  37. <td id="projectalign">
  38. <div id="projectname">Jolt Physics
  39. </div>
  40. <div id="projectbrief">A multi core friendly Game Physics Engine</div>
  41. </td>
  42. </tr>
  43. </tbody>
  44. </table>
  45. </div>
  46. <!-- end header part -->
  47. <!-- Generated by Doxygen 1.12.0 -->
  48. <script type="text/javascript">
  49. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  50. var searchBox = new SearchBox("searchBox", "search/",'.html');
  51. /* @license-end */
  52. </script>
  53. <script type="text/javascript">
  54. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  55. $(function() { codefold.init(0); });
  56. /* @license-end */
  57. </script>
  58. <script type="text/javascript" src="menudata.js"></script>
  59. <script type="text/javascript" src="menu.js"></script>
  60. <script type="text/javascript">
  61. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  62. $(function() {
  63. initMenu('',true,false,'search.php','Search',true);
  64. $(function() { init_search(); });
  65. });
  66. /* @license-end */
  67. </script>
  68. <div id="main-nav"></div>
  69. </div><!-- top -->
  70. <div id="side-nav" class="ui-resizable side-nav-resizable">
  71. <div id="nav-tree">
  72. <div id="nav-tree-contents">
  73. <div id="nav-sync" class="sync"></div>
  74. </div>
  75. </div>
  76. <div id="splitbar" style="-moz-user-select:none;"
  77. class="ui-resizable-handle">
  78. </div>
  79. </div>
  80. <script type="text/javascript">
  81. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  82. $(function(){initNavTree('class_physics_lock.html',''); initResizable(true); });
  83. /* @license-end */
  84. </script>
  85. <div id="doc-content">
  86. <!-- window showing the filter options -->
  87. <div id="MSearchSelectWindow"
  88. onmouseover="return searchBox.OnSearchSelectShow()"
  89. onmouseout="return searchBox.OnSearchSelectHide()"
  90. onkeydown="return searchBox.OnSearchSelectKey(event)">
  91. </div>
  92. <!-- iframe showing the search results (closed by default) -->
  93. <div id="MSearchResultsWindow">
  94. <div id="MSearchResults">
  95. <div class="SRPage">
  96. <div id="SRIndex">
  97. <div id="SRResults"></div>
  98. <div class="SRStatus" id="Loading">Loading...</div>
  99. <div class="SRStatus" id="Searching">Searching...</div>
  100. <div class="SRStatus" id="NoMatches">No Matches</div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. <div class="header">
  106. <div class="summary">
  107. <a href="#pub-static-methods">Static Public Member Functions</a> &#124;
  108. <a href="class_physics_lock-members.html">List of all members</a> </div>
  109. <div class="headertitle"><div class="title">PhysicsLock Class Reference</div></div>
  110. </div><!--header-->
  111. <div class="contents">
  112. <p><code>#include &lt;<a class="el" href="_physics_lock_8h_source.html">PhysicsLock.h</a>&gt;</code></p>
  113. <table class="memberdecls">
  114. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
  115. Static Public Member Functions</h2></td></tr>
  116. <tr class="memitem:ae103305ffa4e008ab2511866b88fc782" id="r_ae103305ffa4e008ab2511866b88fc782"><td class="memTemplParams" colspan="2">template&lt;class LockType &gt; </td></tr>
  117. <tr class="memitem:ae103305ffa4e008ab2511866b88fc782"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#ae103305ffa4e008ab2511866b88fc782">sLock</a> (LockType &amp;inMutex <a class="el" href="_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5">JPH_IF_ENABLE_ASSERTS</a>(, PhysicsLockContext inContext, EPhysicsLockTypes inType))</td></tr>
  118. <tr class="separator:ae103305ffa4e008ab2511866b88fc782"><td class="memSeparator" colspan="2">&#160;</td></tr>
  119. <tr class="memitem:a93408c0ca5bd7bd4668c3c78dbf49966" id="r_a93408c0ca5bd7bd4668c3c78dbf49966"><td class="memTemplParams" colspan="2">template&lt;class LockType &gt; </td></tr>
  120. <tr class="memitem:a93408c0ca5bd7bd4668c3c78dbf49966"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a93408c0ca5bd7bd4668c3c78dbf49966">sUnlock</a> (LockType &amp;inMutex <a class="el" href="_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5">JPH_IF_ENABLE_ASSERTS</a>(, PhysicsLockContext inContext, EPhysicsLockTypes inType))</td></tr>
  121. <tr class="separator:a93408c0ca5bd7bd4668c3c78dbf49966"><td class="memSeparator" colspan="2">&#160;</td></tr>
  122. <tr class="memitem:a625ab9c9ade9d679ea4b4fc9693f8f7d" id="r_a625ab9c9ade9d679ea4b4fc9693f8f7d"><td class="memTemplParams" colspan="2">template&lt;class LockType &gt; </td></tr>
  123. <tr class="memitem:a625ab9c9ade9d679ea4b4fc9693f8f7d"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a625ab9c9ade9d679ea4b4fc9693f8f7d">sLockShared</a> (LockType &amp;inMutex <a class="el" href="_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5">JPH_IF_ENABLE_ASSERTS</a>(, PhysicsLockContext inContext, EPhysicsLockTypes inType))</td></tr>
  124. <tr class="separator:a625ab9c9ade9d679ea4b4fc9693f8f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  125. <tr class="memitem:ab42fb21e1412524a772aa26b9f7411b3" id="r_ab42fb21e1412524a772aa26b9f7411b3"><td class="memTemplParams" colspan="2">template&lt;class LockType &gt; </td></tr>
  126. <tr class="memitem:ab42fb21e1412524a772aa26b9f7411b3"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#ab42fb21e1412524a772aa26b9f7411b3">sUnlockShared</a> (LockType &amp;inMutex <a class="el" href="_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5">JPH_IF_ENABLE_ASSERTS</a>(, PhysicsLockContext inContext, EPhysicsLockTypes inType))</td></tr>
  127. <tr class="separator:ab42fb21e1412524a772aa26b9f7411b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  128. </table>
  129. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  130. <div class="textblock"><p>Helpers to safely lock the different mutexes that are part of the physics system while preventing deadlock Class that keeps track per thread which lock are taken and if the order of locking is correct </p>
  131. </div><h2 class="groupheader">Member Function Documentation</h2>
  132. <a id="ae103305ffa4e008ab2511866b88fc782" name="ae103305ffa4e008ab2511866b88fc782"></a>
  133. <h2 class="memtitle"><span class="permalink"><a href="#ae103305ffa4e008ab2511866b88fc782">&#9670;&#160;</a></span>sLock()</h2>
  134. <div class="memitem">
  135. <div class="memproto">
  136. <div class="memtemplate">
  137. template&lt;class LockType &gt; </div>
  138. <table class="mlabels">
  139. <tr>
  140. <td class="mlabels-left">
  141. <table class="memname">
  142. <tr>
  143. <td class="memname">static void PhysicsLock::sLock </td>
  144. <td>(</td>
  145. <td class="paramtype">LockType &amp;inMutex </td> <td class="paramname"><span class="paramname"><em>JPH_IF_ENABLE_ASSERTS</em></span>, PhysicsLockContext inContext, EPhysicsLockTypes inType</td><td>)</td>
  146. <td></td>
  147. </tr>
  148. </table>
  149. </td>
  150. <td class="mlabels-right">
  151. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  152. </tr>
  153. </table>
  154. </div><div class="memdoc">
  155. </div>
  156. </div>
  157. <a id="a625ab9c9ade9d679ea4b4fc9693f8f7d" name="a625ab9c9ade9d679ea4b4fc9693f8f7d"></a>
  158. <h2 class="memtitle"><span class="permalink"><a href="#a625ab9c9ade9d679ea4b4fc9693f8f7d">&#9670;&#160;</a></span>sLockShared()</h2>
  159. <div class="memitem">
  160. <div class="memproto">
  161. <div class="memtemplate">
  162. template&lt;class LockType &gt; </div>
  163. <table class="mlabels">
  164. <tr>
  165. <td class="mlabels-left">
  166. <table class="memname">
  167. <tr>
  168. <td class="memname">static void PhysicsLock::sLockShared </td>
  169. <td>(</td>
  170. <td class="paramtype">LockType &amp;inMutex </td> <td class="paramname"><span class="paramname"><em>JPH_IF_ENABLE_ASSERTS</em></span>, PhysicsLockContext inContext, EPhysicsLockTypes inType</td><td>)</td>
  171. <td></td>
  172. </tr>
  173. </table>
  174. </td>
  175. <td class="mlabels-right">
  176. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  177. </tr>
  178. </table>
  179. </div><div class="memdoc">
  180. </div>
  181. </div>
  182. <a id="a93408c0ca5bd7bd4668c3c78dbf49966" name="a93408c0ca5bd7bd4668c3c78dbf49966"></a>
  183. <h2 class="memtitle"><span class="permalink"><a href="#a93408c0ca5bd7bd4668c3c78dbf49966">&#9670;&#160;</a></span>sUnlock()</h2>
  184. <div class="memitem">
  185. <div class="memproto">
  186. <div class="memtemplate">
  187. template&lt;class LockType &gt; </div>
  188. <table class="mlabels">
  189. <tr>
  190. <td class="mlabels-left">
  191. <table class="memname">
  192. <tr>
  193. <td class="memname">static void PhysicsLock::sUnlock </td>
  194. <td>(</td>
  195. <td class="paramtype">LockType &amp;inMutex </td> <td class="paramname"><span class="paramname"><em>JPH_IF_ENABLE_ASSERTS</em></span>, PhysicsLockContext inContext, EPhysicsLockTypes inType</td><td>)</td>
  196. <td></td>
  197. </tr>
  198. </table>
  199. </td>
  200. <td class="mlabels-right">
  201. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  202. </tr>
  203. </table>
  204. </div><div class="memdoc">
  205. </div>
  206. </div>
  207. <a id="ab42fb21e1412524a772aa26b9f7411b3" name="ab42fb21e1412524a772aa26b9f7411b3"></a>
  208. <h2 class="memtitle"><span class="permalink"><a href="#ab42fb21e1412524a772aa26b9f7411b3">&#9670;&#160;</a></span>sUnlockShared()</h2>
  209. <div class="memitem">
  210. <div class="memproto">
  211. <div class="memtemplate">
  212. template&lt;class LockType &gt; </div>
  213. <table class="mlabels">
  214. <tr>
  215. <td class="mlabels-left">
  216. <table class="memname">
  217. <tr>
  218. <td class="memname">static void PhysicsLock::sUnlockShared </td>
  219. <td>(</td>
  220. <td class="paramtype">LockType &amp;inMutex </td> <td class="paramname"><span class="paramname"><em>JPH_IF_ENABLE_ASSERTS</em></span>, PhysicsLockContext inContext, EPhysicsLockTypes inType</td><td>)</td>
  221. <td></td>
  222. </tr>
  223. </table>
  224. </td>
  225. <td class="mlabels-right">
  226. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  227. </tr>
  228. </table>
  229. </div><div class="memdoc">
  230. </div>
  231. </div>
  232. <hr/>The documentation for this class was generated from the following file:<ul>
  233. <li>Jolt/Physics/<a class="el" href="_physics_lock_8h_source.html">PhysicsLock.h</a></li>
  234. </ul>
  235. </div><!-- contents -->
  236. </div><!-- doc-content -->
  237. <!-- start footer part -->
  238. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  239. <ul>
  240. <li class="navelem"><a class="el" href="class_physics_lock.html">PhysicsLock</a></li>
  241. <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
  242. </ul>
  243. </div>
  244. </body>
  245. </html>