245 lines
14 KiB
HTML
245 lines
14 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>并发扩展</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_experimental_concurrency skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading">并发扩展</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-experimental.html">experimental</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>C++ 并发扩展 (C++ Extensions for Concurrency) , ISO/IEC TS 19571:2016 ,为 C++ 标准库定义下列新组件:</p>
|
|
<h3><span class="mw-headline" id="std::future_.E7.9A.84.E6.8C.81.E7.BB.AD.E5.8F.8A.E5.85.B6.E4.BB.96.E6.89.A9.E5.B1.95">std::future 的持续及其他扩展</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/future&action=edit&redlink=1" class="new" title="cpp/header/experimental/future(页面不存在)"><experimental/future></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-future.html"><span class="t-lines"><span>future</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>以持续和其他特性增强的 <span class="t-lc"><a href="cpp-thread-future.html">std::future</a></span> 版本<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-shared_future.html"><span class="t-lines"><span>shared_future</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>以持续和其他特性增强的 <span class="t-lc"><a href="cpp-thread-shared_future.html">std::shared_future</a></span> 版本<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-concurrency-promise.html"><span class="t-lines"><span>promise</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>使用 <span class="t-lc">std::experimental::future</span> 的 <span class="t-lc"><a href="cpp-thread-promise.html">std::promise</a></span> 修改版本<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-concurrency-packaged_task.html"><span class="t-lines"><span>packaged_task</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>使用 <span class="t-lc">std::experimental::future</span> 的 <span class="t-lc"><a href="cpp-thread-packaged_task.html">std::packaged_task</a></span> 修改版本<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-when_all.html"><span class="t-lines"><span>when_all</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>产生在所有给定 furure 或 shared_future 均就绪时成为就绪的 future<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-when_any.html"><span class="t-lines"><span>when_any</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>产生在至少一个给定 future 或 shared_future 就绪时成为就绪的 future<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-make_ready_future.html"><span class="t-lines"><span>make_ready_future</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>产生立即就绪并保有指定值的 future<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-make_exceptional_future.html"><span class="t-lines"><span>make_exceptional_future</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>产生立即就绪并保有给定异常的 future<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E7.89.B9.E6.80.A7.E6.B5.8B.E8.AF.95.E5.AE.8F">特性测试宏</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/future&action=edit&redlink=1" class="new" title="cpp/header/experimental/future(页面不存在)"><experimental/future></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><span class="t-lines"><span>__cpp_lib_experimental_future_continuations</span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>至少为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505</span></span></span> 的值,指示支持 future::then 和其他扩展<br />
|
|
<span class="t-mark">(宏常量)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/latch&action=edit&redlink=1" class="new" title="cpp/header/experimental/latch(页面不存在)"><experimental/latch></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><span class="t-lines"><span>__cpp_lib_experimental_latch</span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>至少为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505</span></span></span> 的值,指示支持 latch 类型<br />
|
|
<span class="t-mark">(宏常量)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/barrier&action=edit&redlink=1" class="new" title="cpp/header/experimental/barrier(页面不存在)"><experimental/barrier></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><span class="t-lines"><span>__cpp_lib_experimental_barrier</span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>至少为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505</span></span></span> 的值,指示支持 barrier 类型<br />
|
|
<span class="t-mark">(宏常量)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/atomic&action=edit&redlink=1" class="new" title="cpp/header/experimental/atomic(页面不存在)"><experimental/atomic></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><span class="t-lines"><span>__cpp_lib_experimental_atomic_smart_pointers</span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>至少为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505</span></span></span> 的值,指示支持原子智能指针<br />
|
|
<span class="t-mark">(宏常量)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h2><span class="mw-headline" id=".E5.B9.B6.E5.85.A5_C.2B.2B20">并入 C++20</span></h2>
|
|
<p>并发 TS 的下列组件已并入 C++20 标准。</p>
|
|
<h3><span class="mw-headline" id=".E9.97.A9.E5.92.8C.E5.B1.8F.E9.9A.9C">闩和屏障</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/latch&action=edit&redlink=1" class="new" title="cpp/header/experimental/latch(页面不存在)"><experimental/latch></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-latch.html"><span class="t-lines"><span>latch</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>单次使用的线程屏障<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/barrier&action=edit&redlink=1" class="new" title="cpp/header/experimental/barrier(页面不存在)"><experimental/barrier></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-barrier.html"><span class="t-lines"><span>barrier</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>可复用线程屏障<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-flex_barrier.html"><span class="t-lines"><span>flex_barrier</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>带有在完成时的可定制行为的可复用线程屏障<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.8E.9F.E5.AD.90.E6.99.BA.E8.83.BD.E6.8C.87.E9.92.88">原子智能指针</span></h3>
|
|
<p>这些类模板替换 shared_ptr 的<a href="cpp-memory-shared_ptr-atomic.html">原子函数重载</a></p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于头文件 <code><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/header/experimental/atomic&action=edit&redlink=1" class="new" title="cpp/header/experimental/atomic(页面不存在)"><experimental/atomic></a></code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/atomic_shared_ptr&action=edit&redlink=1" class="new" title="cpp/experimental/atomic shared ptr(页面不存在)"><span class="t-lines"><span>atomic_shared_ptr</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>std::shared_ptr 的原子版本<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/atomic_weak_ptr&action=edit&redlink=1" class="new" title="cpp/experimental/atomic weak ptr(页面不存在)"><span class="t-lines"><span>atomic_weak_ptr</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-concurrency-ts t-mark-ts">(并发 TS)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>std::weak_ptr 的原子版本<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|