調査日: 2026年10月15日
調査モデル : Opus 5.5
元記事: C++メモリモデルの変遷(C++11〜C++26)の「C++20 : seq_cstとリリースシーケンスの修復」節
調査日: 2026年10月15日
調査モデル : Opus 5.5
元記事: C++メモリモデルの変遷(C++11〜C++26)の「C++20 : seq_cstとリリースシーケンスの修復」節
| Paper | Title | Words |
|---|---|---|
| P2300R10 | std::execution | 47495 |
| P3325R5 | A Utility for Creating Execution Environments | 2168 |
| P3396R1 | std::execution wording fixes | 3061 |
| P2079R10 | Parallel scheduler | 9383 |
| P3149R11 | async_scope - Creating scopes for non-sequential concurrency | 16255 |
| P3284R4 | write_env and unstoppable Sender Adaptors | 1346 |
| P3433R1 | Allocator Support for Operation States | 827 |
| #include <cassert> | |
| #include <stop_token> | |
| #include <utility> | |
| #include <print> | |
| // https://github.com/NVIDIA/stdexec/ | |
| #include <stdexec/execution.hpp> | |
| namespace exec = stdexec; | |
| namespace std { | |
| using exec::get_stop_token, exec::sync_wait; | |
| using exec::inplace_stop_source, exec::stoppable_token; |
| #include <coroutine> | |
| #include <print> | |
| // https://github.com/NVIDIA/stdexec/ | |
| #include <stdexec/execution.hpp> | |
| namespace ex = stdexec; | |
| template<typename T> | |
| class Lazy { | |
| public: |
| #include <cassert> | |
| #include <concepts> | |
| #include <span> | |
| #include <tuple> | |
| #include <utility> | |
| #include <ranges> | |
| #if 1 | |
| #include <https://raw.githubusercontent.com/kokkos/mdspan/single-header/mdspan.hpp> | |
| #else | |
| #include <mdspan> |
| #include <cassert> | |
| #include <bit> | |
| #include <iostream> | |
| #include <utility> | |
| #if 1 | |
| #include <https://raw.githubusercontent.com/kokkos/mdspan/single-header/mdspan.hpp> | |
| using std::experimental::mdspan; | |
| using std::experimental::dextents; | |
| #else | |
| #include <mdspan> |
| #include <cassert> | |
| #include <array> | |
| #include <span> | |
| #include <type_traits> | |
| #if 0 | |
| #include <mdspan> | |
| #else | |
| #include <https://raw.githubusercontent.com/kokkos/mdspan/single-header/mdspan.hpp> | |
| #endif | |
| using namespace std; |
| // https://groups.google.com/g/golang-nuts/c/Gze1TRtdLdc/m/RoD2AxssDgAJ | |
| // http://svr-pes20-cppmem.cl.cam.ac.uk/cppmem/ | |
| int main() { | |
| int x = 0; | |
| atomic_int int y = 0; | |
| {{{ { x = 1; | |
| y.store(1); | |
| x = 1; | |
| y.store(1); } | |
| ||| { y.load().readsvalue(0); |
Full barrier
P: =p0=\ /----\ /=p1=\ /----\ /=
* * * *
C: ----/ \=c0=/ \----/ \=c1=/ \-
Half barrier
P: p0=\--------/=p1=\--------/=