Files
hustoj/web/cppreference-zh/chmhelp/cpp-named_req-sharedmutex.html
2025-08-01 12:57:54 +08:00

84 lines
9.2 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>C++ &#20855;&#21517;&#35201;&#27714;&#65306;&#20849;&#20139;&#20114;&#26021;&#20307; (SharedMutex)</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_named_req_SharedMutex skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">C++ &#20855;&#21517;&#35201;&#27714;&#65306;</span><span style="font-style:italic">&#20849;&#20139;&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(SharedMutex)</span></h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-named_req.html">named req</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p><strong class="selflink"><span style="font-style:italic">&#20849;&#20139;&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(SharedMutex)</span></strong> &#35201;&#27714;&#25193;&#23637;<a href="cpp-named_req-Mutex.html"><span style="font-style:italic">&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Mutex)</span></a> &#35201;&#27714;&#65292;&#20197;&#21253;&#25324;&#20849;&#20139;&#30340;&#38145;&#25152;&#26377;&#26435;&#27169;&#24335;&#12290;</p>
<h3><span class="mw-headline" id=".E8.A6.81.E6.B1.82">&#35201;&#27714;</span></h3>
<ul>
<li><a href="cpp-named_req-Mutex.html"><span style="font-style:italic">&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Mutex)</span></a></li>
</ul>
<p>&#21478;&#22806;&#65292;&#20849;&#20139;&#20114;&#26021; (<span style="font-style:italic">&#20849;&#20139;&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(SharedMutex)</span> ) &#31867;&#22411;&#30340;&#23545;&#35937; <code><b>m</b></code> &#25903;&#25345;&#21478;&#19968;&#25152;&#26377;&#26435;&#27169;&#24335;&#65306;&#20849;&#20139;&#12290;&#22810;&#20010;&#32447;&#31243;&#65288;&#25110;&#26356;&#36890;&#29992;&#22320;&#65292;&#25191;&#34892;&#20195;&#29702;&#65289;&#33021;&#21516;&#26102;&#20197;&#20849;&#20139;&#27169;&#24335;&#21344;&#26377;&#27492;&#20114;&#26021;&#65292;&#20294;&#33509;&#26377;&#32447;&#31243;&#20197;&#25490;&#20182;&#24615;&#27169;&#24335;&#21344;&#26377;&#65292;&#21017;&#26080;&#32447;&#31243;&#21487;&#33719;&#24471;&#20849;&#20139;&#25152;&#26377;&#26435;&#65292;&#32780;&#33509;&#26377;&#32447;&#31243;&#20197;&#20849;&#20139;&#27169;&#24335;&#21344;&#26377;&#65292;&#21017;&#26080;&#32447;&#31243;&#21487;&#33719;&#24471;&#25490;&#20182;&#24615;&#25152;&#26377;&#26435;&#12290;&#33509;&#22810;&#20110;&#23454;&#29616;&#23450;&#20041;&#25968;&#37327;&#65288;&#19981;&#23569;&#20110; 10000 &#65289;&#30340;&#32447;&#31243;&#25968;&#20445;&#26377;&#19968;&#20010;&#20849;&#20139;&#38145;&#65292;&#21017;&#21478;&#19968;&#23545;&#33719;&#24471;&#20849;&#20139;&#38145;&#30340;&#23581;&#35797;&#20250;&#38459;&#22622;&#30452;&#33267;&#20849;&#20139;&#25152;&#26377;&#32773;&#30340;&#25968;&#37327;&#36300;&#21040;&#35813;&#38408;&#20540;&#20197;&#19979;&#12290;</p>
<ul>
<li>&#34920;&#36798;&#24335; <span class="t-c"><span class="mw-geshi cpp source-cpp">m.<span class="me1">lock_shared</span><span class="br0">(</span><span class="br0">)</span></span></span> &#25317;&#26377;&#19979;&#21015;&#23646;&#24615;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#34920;&#29616;&#20026;&#21407;&#23376;&#25805;&#20316;&#12290;</li>
<li>&#38459;&#22622;&#35843;&#29992;&#26041;&#32447;&#31243;&#65292;&#30452;&#21040;&#33021;&#33719;&#24471;&#20114;&#26021;&#30340;&#20849;&#20139;&#25152;&#26377;&#26435;&#12290;</li>
<li>&#21516;&#19968;&#20114;&#26021;&#19978;&#30340;&#20808;&#21069; <span class="t-c"><span class="mw-geshi cpp source-cpp">m.<span class="me1">unlock</span><span class="br0">(</span><span class="br0">)</span></span></span> &#25805;&#20316;<i>&#21516;&#27493;&#20110;</i>&#27492;&#25805;&#20316;&#65288;&#31561;&#20215;&#20110;&#37322;&#25918;&#33719;&#24471;&#20869;&#23384;&#39034;&#24207; (<span class="t-lc"><a href="cpp-atomic-memory_order.html">std::memory_order</a></span>) &#65289;&#12290;</li>
<li>&#33509;&#35843;&#29992;&#26041;&#32447;&#31243;&#24050;&#20197;&#20219;&#20309;&#27169;&#24335;&#21344;&#26377;&#20114;&#26021;&#65292;&#21017;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</li>
<li>&#33509;&#25243;&#20986;&#24322;&#24120;&#65292;&#21017;&#19981;&#33719;&#24471;&#20849;&#20139;&#38145;&#12290;</li>
</ul>
</dd>
</dl>
<ul>
<li>&#34920;&#36798;&#24335; <span class="t-c"><span class="mw-geshi cpp source-cpp">m.<span class="me1">try_lock_shared</span><span class="br0">(</span><span class="br0">)</span></span></span> &#25317;&#26377;&#19979;&#21015;&#23646;&#24615;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#34920;&#29616;&#20026;&#21407;&#23376;&#25805;&#20316;&#12290;</li>
<li>&#35797;&#22270;&#20026;&#35843;&#29992;&#26041;&#32447;&#31243;&#33719;&#24471;&#20114;&#26021;&#30340;&#20849;&#20139;&#25152;&#26377;&#26435;&#65292;&#32780;&#19981;&#38459;&#22622;&#12290;&#33509;&#26410;&#24471;&#21040;&#25152;&#26377;&#26435;&#65292;&#21017;&#31435;&#21363;&#36820;&#22238;&#12290;&#20801;&#35768;&#27492;&#20989;&#25968;&#34394;&#20551;&#22320;&#22833;&#36133;&#24182;&#36820;&#22238;&#65292;&#21363;&#20351;&#20114;&#26021;&#24403;&#21069;&#26410;&#20026;&#20219;&#20309;&#32447;&#31243;&#20197;&#20219;&#20309;&#27169;&#24335;&#21344;&#26377;&#12290;</li>
<li>&#33509; <code>try_lock_shared()</code> &#25104;&#21151;&#65292;&#21017;&#21516;&#19968;&#23545;&#35937;&#19978;&#30340;&#20808;&#21069; <code>unlock()</code> &#25805;&#20316;<i>&#21516;&#27493;&#20110;</i>&#27492;&#25805;&#20316;&#65288;&#31561;&#20215;&#20110;&#37322;&#25918;&#33719;&#24471;&#20869;&#23384;&#39034;&#24207; (<span class="t-lc"><a href="cpp-atomic-memory_order.html">std::memory_order</a></span>) &#65289; &#12290;</li>
<li>&#33509;&#35843;&#29992;&#26041;&#32447;&#31243;&#24050;&#20197;&#20219;&#20309;&#27169;&#24335;&#21344;&#26377;&#20114;&#26021;&#65292;&#21017;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</li>
</ul>
</dd>
</dl>
<ul>
<li>&#34920;&#36798;&#24335; <span class="t-c"><span class="mw-geshi cpp source-cpp">m.<span class="me1">unlock_shared</span><span class="br0">(</span><span class="br0">)</span></span></span> &#25317;&#26377;&#19979;&#21015;&#23646;&#24615;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#34920;&#29616;&#20026;&#21407;&#23376;&#25805;&#20316;&#12290;</li>
<li>&#37322;&#25918;&#35843;&#29992;&#26041;&#32447;&#31243;&#30340;&#20114;&#26021;&#25152;&#26377;&#26435;&#65292;&#19988;<i>&#21516;&#27493;&#20110;</i>&#21516;&#19968;&#23545;&#35937;&#19978;&#21518;&#32487;&#30340;&#25104;&#21151;&#38145;&#25805;&#20316;&#12290;</li>
<li>&#33509;&#35843;&#29992;&#26041;&#32447;&#31243;&#19981;&#21344;&#26377;&#20114;&#26021;&#65292;&#21017;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</li>
</ul>
</dd>
</dl>
<ul>
<li>&#21333;&#20010;&#20114;&#26021;&#19978;&#30340;&#25152;&#26377;&#38145;&#21644;&#35299;&#38145;&#25805;&#20316;&#20197;&#21333;&#29420;&#20840;&#24207;&#20986;&#29616;&#12290;</li>
</ul>
<h3><span class="mw-headline" id=".E5.BA.93.E7.B1.BB.E5.9E.8B">&#24211;&#31867;&#22411;</span></h3>
<p>&#19979;&#21015;&#26631;&#20934;&#24211;&#31867;&#22411;&#28385;&#36275;<strong class="selflink"><span style="font-style:italic">&#20849;&#20139;&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(SharedMutex)</span></strong> &#65306;</p>
<ul>
<li><span class="t-lc"><a href="cpp-thread-shared_mutex.html">std::shared_mutex</a></span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></li>
<li><span class="t-lc"><a href="cpp-thread-shared_timed_mutex.html">std::shared_timed_mutex</a></span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></li>
</ul>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li><a href="cpp-thread.html">&#32447;&#31243;&#25903;&#25345;&#24211;</a></li>
<li><a href="cpp-named_req-Mutex.html"><span style="font-style:italic">&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Mutex)</span></a></li>
<li><a href="cpp-named_req-TimedMutex.html"><span style="font-style:italic">&#23450;&#26102;&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(TimedMutex)</span></a></li>
<li><a href="cpp-named_req-SharedTimedMutex.html"><span style="font-style:italic">&#20849;&#20139;&#23450;&#26102;&#20114;&#26021;&#20307;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(SharedTimedMutex)</span></a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>