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

140 lines
21 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>&#20869;&#23384;&#27169;&#22411;</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_language_memory_model skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#20869;&#23384;&#27169;&#22411;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#20026; C++ &#25277;&#35937;&#26426;&#30340;&#30446;&#30340;&#23450;&#20041;&#20102;&#35745;&#31639;&#26426;&#20869;&#23384;&#23384;&#20648;&#30340;&#35821;&#20041;&#12290;</p>
<p>&#21487;&#20026; C++ &#31243;&#24207;&#25152;&#29992;&#30340;&#20869;&#23384;&#26159;&#19968;&#25110;&#22810;&#20010;<i>&#23383;&#33410;</i>&#30340;&#36830;&#32493;&#24207;&#21015;&#12290;&#20869;&#23384;&#20013;&#30340;&#27599;&#20010;&#23383;&#33410;&#25317;&#26377;&#21807;&#19968;&#30340;<i>&#22320;&#22336;</i>&#12290;</p>
<h3><span class="mw-headline" id=".E5.AD.97.E8.8A.82">&#23383;&#33410;</span></h3>
<p><i>&#23383;&#33410;&#65288;byte&#65289;</i>&#26159;&#26368;&#23567;&#30340;&#21487;&#23547;&#22336;&#20869;&#23384;&#21333;&#20803;&#12290;&#23427;&#34987;&#23450;&#20041;&#20026;&#30456;&#25509;&#30340;&#20301;&#24207;&#21015;&#65292;&#20854;&#22823;&#21040;&#36275;&#20197;&#20445;&#26377;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx14">
<td>
<ul>
<li>&#20219;&#20309; <code>UTF-8</code> &#32534;&#30721;&#21333;&#20803;&#65288;256 &#20010;&#30456;&#24322;&#20540;&#65289;&#21644;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-until-cxx23">
<td>
<ul>
<li><a href="cpp-language-charset.html#.E5.9F.BA.E7.A1.80.E6.89.A7.E8.A1.8C.E5.AD.97.E7.AC.A6.E9.9B.86">&#22522;&#30784;&#25191;&#34892;&#23383;&#31526;&#38598;</a>&#30340;&#20219;&#20309;&#25104;&#21592;&#12290;</li>
</ul>
</td>
<td><span class="t-mark-rev t-until-cxx23">(C++23 &#21069;)</span></td>
</tr>
</table>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx23">
<td>
<ul>
<li><a href="cpp-language-charset.html#.E5.9F.BA.E7.A1.80.E5.AD.97.E9.9D.A2.E9.87.8F.E5.AD.97.E7.AC.A6.E9.9B.86">&#22522;&#30784;&#23383;&#38754;&#37327;&#23383;&#31526;&#38598;</a>&#30340;&#20219;&#20309;&#25104;&#21592;&#30340;&#36890;&#24120;&#23383;&#38754;&#37327;&#32534;&#30721;&#12290;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx23">(C++23 &#36215;)</span></td>
</tr>
</table>
<p>&#19982; C &#30456;&#20284;&#65292;C++ &#20063;&#25903;&#25345; 8 &#20301;&#25110;&#26356;&#22823;&#30340;&#23383;&#33410;&#12290;</p>
<p><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span>&#12289;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> &#21644; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">signed</span> <span class="kw4">char</span></span></span> <a href="cpp-language-types.html">&#31867;&#22411;</a>&#25226;&#19968;&#20010;&#23383;&#33410;&#29992;&#20110;&#23384;&#20648;&#21644;<a href="cpp-language-object.html">&#20540;&#34920;&#31034;</a>&#12290;&#23383;&#33410;&#20013;&#30340;&#20301;&#25968;&#21487;&#20316;&#20026; <span class="t-lc"><a href="cpp-types-climits.html">CHAR_BIT</a></span> &#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-numeric_limits.html"><span class="kw344">std::<span class="me2">numeric_limits</span></span></a><span class="sy1">&lt;</span><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="sy1">&gt;</span><span class="sy4">::</span><span class="me2">digits</span></span></span> &#35775;&#38382;&#12290;</p>
<h3><span class="mw-headline" id=".E5.86.85.E5.AD.98.E4.BD.8D.E7.BD.AE">&#20869;&#23384;&#20301;&#32622;</span></h3>
<p>&#19968;&#20010;<i>&#20869;&#23384;&#20301;&#32622;</i>&#26159;</p>
<ul>
<li>&#19968;&#20010;<a href="cpp-language-type.html">&#26631;&#37327;&#31867;&#22411;</a>&#65288;&#31639;&#26415;&#31867;&#22411;&#12289;&#25351;&#38024;&#31867;&#22411;&#12289;&#26522;&#20030;&#31867;&#22411;&#25110; std::nullptr_t&#65289;&#23545;&#35937;</li>
<li>&#25110;&#38750;&#38646;&#38271;<a href="cpp-language-bit_field.html">&#20301;&#22495;</a>&#30340;&#26368;&#22823;&#30456;&#25509;&#24207;&#21015;</li>
</ul>
<p>&#27880;&#24847;&#65306;&#35821;&#35328;&#30340;&#21508;&#31181;&#21151;&#33021;&#29305;&#24615;&#65292;&#20363;&#22914;<a href="cpp-language-reference.html">&#24341;&#29992;</a>&#21644;<a href="cpp-language-virtual.html">&#34394;&#20989;&#25968;</a>&#65292;&#21487;&#33021;&#28041;&#21450;&#21040;&#31243;&#24207;&#19981;&#21487;&#35775;&#38382;&#65292;&#20294;&#20026;&#23454;&#29616;&#25152;&#31649;&#29702;&#30340;&#39069;&#22806;&#20869;&#23384;&#20301;&#32622;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> S <span class="br0">{</span>
<span class="kw4">char</span> a<span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #1</span>
<span class="kw4">int</span> b <span class="sy4">:</span> <span class="nu0">5</span><span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #2</span>
<span class="kw4">int</span> c <span class="sy4">:</span> <span class="nu0">11</span>, <span class="co1">// &#20869;&#23384;&#20301;&#32622; #2 &#65288;&#24310;&#32493;&#65289;</span>
<span class="sy4">:</span> <span class="nu0">0</span>,
d <span class="sy4">:</span> <span class="nu0">8</span><span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #3</span>
<span class="kw1">struct</span> <span class="br0">{</span>
<span class="kw4">int</span> ee <span class="sy4">:</span> <span class="nu0">8</span><span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #4</span>
<span class="br0">}</span> e<span class="sy4">;</span>
<span class="br0">}</span> obj<span class="sy4">;</span> <span class="co1">// &#23545;&#35937; &#39;obj&#39; &#30001; 4 &#20010;&#20998;&#31163;&#30340;&#20869;&#23384;&#20301;&#32622;&#32452;&#25104;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E7.BA.BF.E7.A8.8B.E4.B8.8E.E6.95.B0.E6.8D.AE.E7.AB.9E.E4.BA.89">&#32447;&#31243;&#19982;&#25968;&#25454;&#31454;&#20105;</span></h3>
<p>&#25191;&#34892;&#32447;&#31243;&#26159;&#31243;&#24207;&#20013;&#30340;&#25511;&#21046;&#27969;&#65292;&#23427;&#22987;&#20110; <span class="t-lc"><a href="cpp-thread-thread-thread.html">std::thread::thread</a></span>&#12289;<span class="t-lc"><a href="cpp-thread-async.html">std::async</a></span> &#25110;&#20197;&#20854;&#20182;&#26041;&#24335;&#25152;&#36827;&#34892;&#30340;&#39030;&#23618;&#20989;&#25968;&#35843;&#29992;&#12290;</p>
<p>&#20219;&#20309;&#32447;&#31243;&#37117;&#33021;&#28508;&#22312;&#22320;&#35775;&#38382;&#31243;&#24207;&#20013;&#30340;&#20219;&#20309;&#23545;&#35937;&#65288;&#25317;&#26377;&#33258;&#21160;&#25110;&#32447;&#31243;&#23616;&#37096;<a href="cpp-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#30340;&#23545;&#35937;&#20173;&#28982;&#21487;&#20197;&#34987;&#21478;&#19968;&#32447;&#31243;&#36890;&#36807;&#25351;&#38024;&#25110;&#24341;&#29992;&#35775;&#38382;&#65289;&#12290;</p>
<p>&#19981;&#21516;&#30340;&#25191;&#34892;&#32447;&#31243;&#22987;&#32456;&#21487;&#20197;&#21516;&#26102;&#35775;&#38382;&#65288;&#35835;&#21644;&#20889;&#65289;&#19981;&#21516;&#30340;<i>&#20869;&#23384;&#20301;&#32622;</i>&#65292;&#19981;&#38656;&#35201;&#24178;&#28041;&#25110;&#21516;&#27493;&#30340;&#20219;&#20309;&#35201;&#27714;&#12290;</p>
<p>&#24403;&#26576;&#20010;&#34920;&#36798;&#24335;&#30340;<a href="cpp-language-eval_order.html">&#27714;&#20540;</a>&#20889;&#20837;&#26576;&#20010;&#20869;&#23384;&#20301;&#32622;&#65292;&#32780;&#21478;&#19968;&#27714;&#20540;&#35835;&#25110;&#20462;&#25913;&#21516;&#19968;&#20869;&#23384;&#20301;&#32622;&#26102;&#65292;&#31216;&#36825;&#20123;&#34920;&#36798;&#24335;<i>&#20914;&#31361;</i>&#12290;&#25317;&#26377;&#20004;&#20010;&#20914;&#31361;&#30340;&#27714;&#20540;&#30340;&#31243;&#24207;&#23601;&#26377;<i>&#25968;&#25454;&#31454;&#20105;</i>&#65292;&#38500;&#38750;</p>
<ul>
<li>&#20004;&#20010;&#27714;&#20540;&#37117;&#22312;&#21516;&#19968;&#32447;&#31243;&#19978;&#65292;&#25110;&#32773;&#22312;&#21516;&#19968;<a href="cpp-utility-program-signal.html#.E4.BF.A1.E5.8F.B7.E5.A4.84.E7.90.86.E5.87.BD.E6.95.B0">&#20449;&#21495;&#22788;&#29702;&#20989;&#25968;</a>&#20013;&#25191;&#34892;&#65292;&#25110;</li>
<li>&#20004;&#20010;&#20914;&#31361;&#30340;&#27714;&#20540;&#37117;&#26159;&#21407;&#23376;&#25805;&#20316;&#65288;&#35265; <span class="t-lc"><a href="cpp-atomic-atomic.html">std::atomic</a></span> &#65289;&#65292;&#25110;</li>
<li>&#19968;&#20010;&#20914;&#31361;&#30340;&#27714;&#20540;<i>&#21457;&#29983;&#26089;&#20110;&#65288;happens-before&#65289;</i>&#21478;&#19968;&#20010;&#65288;&#35265; <span class="t-lc"><a href="cpp-atomic-memory_order.html">std::memory_order</a></span>&#65289;</li>
</ul>
<p>&#33509;&#20986;&#29616;&#25968;&#25454;&#31454;&#20105;&#65292;&#21017;&#31243;&#24207;&#30340;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</p>
<p>&#65288;&#29305;&#21035;&#26159;&#65292;<span class="t-lc"><a href="cpp-thread-mutex.html">std::mutex</a></span> &#30340;&#37322;&#25918;<i>&#21516;&#27493;&#20110;</i>&#65292;&#20174;&#32780;<i>&#21457;&#29983;&#26089;&#20110;</i>&#21478;&#19968;&#32447;&#31243;&#23545;&#21516;&#19968; mutex &#30340;&#33719;&#21462;&#65292;&#36825;&#20351;&#24471;&#20114;&#26021;&#38145;&#21487;&#20197;&#29992;&#26469;&#38450;&#27490;&#25968;&#25454;&#31454;&#20105;&#65289;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">int</span> cnt <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="kw4">auto</span> f <span class="sy1">=</span> <span class="br0">[</span><span class="sy3">&amp;</span><span class="br0">]</span><span class="br0">{</span>cnt<span class="sy2">++</span><span class="sy4">;</span><span class="br0">}</span><span class="sy4">;</span>
<a href="cpp-thread-thread.html"><span class="kw2146">std::<span class="me2">thread</span></span></a> t1<span class="br0">{</span>f<span class="br0">}</span>, t2<span class="br0">{</span>f<span class="br0">}</span>, t3<span class="br0">{</span>f<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#26410;&#23450;&#20041;&#34892;&#20026;</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><a href="cpp-atomic-atomic.html"><span class="kw2066">std::<span class="me2">atomic</span></span></a><span class="sy1">&lt;</span><span class="kw4">int</span><span class="sy1">&gt;</span> cnt<span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">auto</span> f <span class="sy1">=</span> <span class="br0">[</span><span class="sy3">&amp;</span><span class="br0">]</span><span class="br0">{</span>cnt<span class="sy2">++</span><span class="sy4">;</span><span class="br0">}</span><span class="sy4">;</span>
<a href="cpp-thread-thread.html"><span class="kw2146">std::<span class="me2">thread</span></span></a> t1<span class="br0">{</span>f<span class="br0">}</span>, t2<span class="br0">{</span>f<span class="br0">}</span>, t3<span class="br0">{</span>f<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// OK</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.86.85.E5.AD.98.E9.A1.BA.E5.BA.8F">&#20869;&#23384;&#39034;&#24207;</span></h3>
<p>&#24403;&#32447;&#31243;&#20174;&#26576;&#20010;&#20869;&#23384;&#20301;&#32622;&#35835;&#21462;&#20540;&#26102;&#65292;&#23427;&#21487;&#33021;&#30475;&#21040;&#21021;&#20540;&#65292;&#21516;&#19968;&#32447;&#31243;&#25152;&#20889;&#20837;&#30340;&#20540;&#65292;&#25110;&#21478;&#19968;&#32447;&#31243;&#25152;&#20889;&#20837;&#30340;&#20540;&#12290;&#26377;&#20851;&#32447;&#31243;&#25152;&#20316;&#30340;&#20889;&#20837;&#25805;&#20316;&#23545;&#20854;&#20182;&#32447;&#31243;&#21464;&#20026;&#21487;&#35265;&#30340;&#39034;&#24207;&#19978;&#30340;&#32454;&#33410;&#65292;&#35265; <span class="t-lc"><a href="cpp-atomic-memory_order.html">std::memory_order</a></span>&#12290;</p>
<h3><span class="mw-headline" id=".E5.90.91.E5.89.8D.E8.BF.9B.E5.B1.95">&#21521;&#21069;&#36827;&#23637;</span></h3>
<h4><span class="mw-headline" id=".E5.85.8D.E5.A6.A8.E7.A2.8D">&#20813;&#22952;&#30861;</span></h4>
<p>&#24403;&#21482;&#26377;&#19968;&#20010;&#26410;&#22312;&#26631;&#20934;&#24211;&#20989;&#25968;&#20013;&#38459;&#22622;&#30340;&#32447;&#31243;&#25191;&#34892;&#26576;&#20010;&#20813;&#38145;&#30340;<a href="cpp-atomic.html">&#21407;&#23376;&#20989;&#25968;</a>&#26102;&#65292;&#20445;&#35777;&#35813;&#25191;&#34892;&#23558;&#20250;&#23436;&#25104;&#65288;&#25152;&#26377;&#26631;&#20934;&#24211;&#20813;&#38145;&#25805;&#20316;&#22343;&#20026;<a href="https://en.wikipedia.org/wiki/Non-blocking_algorithm#Obstruction-freedom" class="extiw" title="enwiki:Non-blocking algorithm">&#20813;&#22952;&#30861;</a>&#30340;&#65289;&#12290;</p>
<h4><span class="mw-headline" id=".E5.85.8D.E9.94.81">&#20813;&#38145;</span></h4>
<p>&#24403;&#19968;&#25110;&#22810;&#20010;&#20813;&#38145;&#21407;&#23376;&#20989;&#25968;&#21516;&#26102;&#36816;&#34892;&#26102;&#65292;&#20445;&#35777;&#20854;&#20013;&#33267;&#23569;&#19968;&#20010;&#23558;&#20250;&#23436;&#25104;&#65288;&#25152;&#26377;&#26631;&#20934;&#24211;&#20813;&#38145;&#25805;&#20316;&#22343;&#20026;<a href="https://en.wikipedia.org/wiki/Non-blocking_algorithm#Lock-freedom" class="extiw" title="enwiki:Non-blocking algorithm">&#20813;&#38145;</a>&#30340;&mdash;&mdash;&#30830;&#20445;&#20854;&#20182;&#32447;&#31243;&#19981;&#33021;&#19981;&#30830;&#23450;&#22320;&#27963;&#38145;&#23427;&#20204;&#65288;&#20363;&#22914;&#20197;&#36830;&#32493;&#31363;&#21462;&#32531;&#23384;&#32447;&#30340;&#26041;&#24335;&#65289;&#65292;&#26159;&#23454;&#29616;&#30340;&#24037;&#20316;&#65289;&#12290;</p>
<h4><span class="mw-headline" id=".E8.BF.9B.E5.B1.95.E4.BF.9D.E8.AF.81">&#36827;&#23637;&#20445;&#35777;</span></h4>
<p>&#21512;&#27861;&#30340; C++ &#31243;&#24207;&#20013;&#65292;&#27599;&#20010;&#32447;&#31243;&#26368;&#32456;&#35201;&#20570;&#19979;&#21015;&#20043;&#19968;&#65306;</p>
<ul>
<li>&#32456;&#27490;</li>
<li>&#35843;&#29992; I/O &#24211;&#20989;&#25968;</li>
<li>&#36890;&#36807; <a href="cpp-language-cv.html">volatile</a> &#27867;&#24038;&#20540;&#36827;&#34892;&#35775;&#38382;</li>
<li>&#36827;&#34892;&#21407;&#23376;&#25805;&#20316;&#25110;&#21516;&#27493;&#25805;&#20316;</li>
</ul>
<p>&#27809;&#26377;&#32447;&#31243;&#33021;&#22312;&#19981;&#20570;&#20219;&#20309;&#36825;&#20123;&#21487;&#35266;&#23519;&#34892;&#20026;&#30340;&#24773;&#20917;&#19979;&#27704;&#36828;&#25191;&#34892;&#12290;</p>
<p>&#27880;&#24847;&#65292;&#36825;&#24847;&#21619;&#30528;&#21253;&#21547;&#26080;&#38480;&#36882;&#24402;&#25110;&#26080;&#38480;&#24490;&#29615;&#65288;&#26080;&#35770;&#26159;&#23454;&#29616;&#20026; <a href="cpp-language-for.html">for &#35821;&#21477;</a> &#25110;&#26159;&#29992; <a href="cpp-language-goto.html">goto</a> &#24490;&#29615;&#36824;&#26159;&#20854;&#20182;&#26041;&#24335;&#65289;&#30340;&#31243;&#24207;&#20855;&#26377;<a href="cpp-language-ub.html">&#26410;&#23450;&#20041;&#34892;&#20026;</a>&#12290;&#36825;&#20801;&#35768;&#32534;&#35793;&#22120;&#31227;&#38500;&#25152;&#26377;&#26080;&#21487;&#35266;&#23519;&#34892;&#20026;&#30340;&#24490;&#29615;&#65292;&#32780;&#19981;&#24517;&#35777;&#26126;&#20182;&#20204;&#32456;&#23558;&#32456;&#27490;&#12290;</p>
<p>&#33509;&#32447;&#31243;&#25191;&#34892;&#20102;&#19978;&#36848;&#27493;&#39588;&#20043;&#19968;&#65288;I/O&#12289;volatile&#12289;&#21407;&#23376;&#25110;&#21516;&#27493;&#25805;&#20316;&#65289;&#65292;&#38459;&#22622;&#20110;&#26631;&#20934;&#24211;&#20989;&#25968;&#20013;&#65292;&#25110;&#35843;&#29992;&#30001;&#20110;&#26576;&#20010;&#26410;&#38459;&#22622;&#30340;&#24182;&#21457;&#32447;&#31243;&#32780;&#26410;&#33021;&#23436;&#25104;&#30340;&#21407;&#23376;&#20813;&#38145;&#20989;&#25968;&#65292;&#21017;&#31216;&#23427;<i>&#21462;&#24471;&#36827;&#23637;&#65288;make progress&#65289;</i>&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<h4><span class="mw-headline" id=".E5.B9.B6.E5.8F.91.E5.90.91.E5.89.8D.E8.BF.9B.E5.B1.95">&#24182;&#21457;&#21521;&#21069;&#36827;&#23637;</span></h4>
<p>&#33509;&#32447;&#31243;&#25552;&#20379;<i>&#24182;&#21457;&#21521;&#21069;&#36827;&#23637;&#20445;&#35777;&#65288;concurrent forward progress guarantee&#65289;</i>&#65292;&#21017;&#21482;&#35201;&#23427;&#23578;&#26410;&#32456;&#27490;&#65292;&#23601;&#23558;&#22312;&#26377;&#38480;&#37327;&#30340;&#26102;&#38388;&#20869;<i>&#21462;&#24471;&#36827;&#23637;</i>&#65288;&#23450;&#20041;&#22914;&#19978;&#65289;&#65292;&#26080;&#20851;&#20046;&#20854;&#20182;&#32447;&#31243;&#65288;&#33509;&#23384;&#22312;&#65289;&#26159;&#21542;&#21462;&#24471;&#36827;&#23637;&#12290;</p>
<p>&#26631;&#20934;&#40723;&#21169;&#20294;&#19981;&#35201;&#27714;&#20027;&#32447;&#31243;&#21644; <span class="t-lc"><a href="cpp-thread-thread.html">std::thread</a></span> &#25152;&#21551;&#21160;&#30340;&#32447;&#31243;&#25552;&#20379;&#24182;&#21457;&#21521;&#21069;&#36827;&#23637;&#20445;&#35777;&#12290;</p>
<h4><span class="mw-headline" id=".E5.B9.B6.E8.A1.8C.E5.90.91.E5.89.8D.E8.BF.9B.E5.B1.95">&#24182;&#34892;&#21521;&#21069;&#36827;&#23637;</span></h4>
<p>&#33509;&#32447;&#31243;&#25552;&#20379;<i>&#24182;&#34892;&#21521;&#21069;&#36827;&#23637;&#20445;&#35777;&#65288;parallel forward progress guarantee&#65289;</i>&#65292;&#21017;&#33509;&#32447;&#31243;&#23578;&#26410;&#25191;&#34892;&#20219;&#20309;&#25191;&#34892;&#27493;&#39588;&#65288;I/O&#12289;volatile&#12289;&#21407;&#23376;&#25110;&#21516;&#27493;&#25805;&#20316;&#65289;&#65292;&#23601;&#19981;&#35201;&#27714;&#23454;&#29616;&#20445;&#35777;&#35813;&#32447;&#31243;&#32456;&#23558;&#21462;&#24471;&#36827;&#23637;&#65292;&#20294;&#19968;&#26086;&#27492;&#32447;&#31243;&#24320;&#22987;&#25191;&#34892;&#27493;&#39588;&#65292;&#21017;&#23427;&#25552;&#20379;<i>&#24182;&#21457;&#21521;&#21069;&#36827;&#23637;</i>&#20445;&#35777;&#65288;&#27492;&#35268;&#21017;&#25551;&#36848;&#32447;&#31243;&#27744;&#20013;&#20197;&#20219;&#24847;&#39034;&#24207;&#25191;&#34892;&#20219;&#21153;&#30340;&#32447;&#31243;&#65289;&#12290;</p>
<h4><span class="mw-headline" id=".E5.BC.B1.E5.B9.B6.E8.A1.8C.E5.90.91.E5.89.8D.E8.BF.9B.E5.B1.95">&#24369;&#24182;&#34892;&#21521;&#21069;&#36827;&#23637;</span></h4>
<p>&#33509;&#32447;&#31243;&#25552;&#20379;<i>&#24369;&#24182;&#34892;&#21521;&#21069;&#36827;&#23637;&#20445;&#35777;&#65288;weakly parallel forward progress guarantee&#65289;</i>&#65292;&#21017;&#19981;&#20445;&#35777;&#23427;&#32456;&#23558;&#21462;&#24471;&#36827;&#23637;&#65292;&#26080;&#20851;&#20046;&#20854;&#20182;&#32447;&#31243;&#26159;&#21542;&#21462;&#24471;&#36827;&#23637;&#12290;</p>
<p><br />
&#27492;&#31867;&#32447;&#31243;&#20173;&#28982;&#33021;&#36890;&#36807;&#20197;&#21521;&#21069;&#36827;&#23637;&#20445;&#35777;&#22996;&#25176;&#36827;&#34892;&#38459;&#22622;&#26469;&#20445;&#35777;&#21462;&#24471;&#36827;&#23637;&#65306;&#33509;&#32447;&#31243; P &#20197;&#27492;&#26041;&#24335;&#38459;&#22622;&#20110;&#32447;&#31243;&#38598;&#21512; S &#30340;&#23436;&#25104;&#65292;&#21017; S &#20013;&#33267;&#23569;&#26377;&#19968;&#20010;&#32447;&#31243;&#23558;&#25552;&#20379;&#31561;&#20110;&#25110;&#24378;&#20110; P &#30340;&#21521;&#21069;&#36827;&#23637;&#20445;&#35777;&#12290;&#19968;&#26086;&#35813;&#32447;&#31243;&#23436;&#25104;&#65292;&#21017;&#31867;&#20284;&#22320;&#24378;&#21270; S &#20013;&#30340;&#21478;&#19968;&#32447;&#31243;&#12290;&#19968;&#26086;&#35813;&#38598;&#21512;&#20026;&#31354;&#65292;&#21017;&#35299;&#38500; P &#30340;&#38459;&#22622;&#12290;</p>
<p>&#26469;&#33258; C++ &#26631;&#20934;&#24211;&#30340;<a href="cpp-algorithm.html">&#24182;&#34892;&#31639;&#27861;</a>&#65292;&#22343;&#20197;&#21521;&#21069;&#20445;&#35777;&#22996;&#25176;&#38459;&#22622;&#20110;&#26576;&#20010;&#26631;&#20934;&#24211;&#25152;&#31649;&#29702;&#30340;&#32447;&#31243;&#30340;&#26410;&#25351;&#26126;&#38598;&#21512;&#30340;&#23436;&#25104;&#19978;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>