Modernes C++

このページは、私のブログ Modernes C++ の出発点です。私の既存および今後の投稿の簡単な概要。

この概要には 2 つの目的があります。最初に、この構造は 1 つのビューで概要、どの投稿が既に書かれているか、どのようにそれらを見つけることができるかを示します。次に、これから書くすべての投稿の概要を説明します。この投稿の将来を明確にするために、アウトラインを順次改良します。この目的は、私にとってより困難な課題です。

最新の C++ でのマルチスレッド

  • 概要

C++ メモリ モデル

<オール> <オール>
  • 概要
  • アトミック データ型 <オール>
  • std::atomic_flag
  • std::atomic
  • std::atomic
  • 同期と順序の制約
  • さまざまな C++ メモリ モデル <オール>
  • 順次一貫性 <オール>
  • 理論
  • 練習
  • 取得と解放のセマンティック <オール>
  • 同期と順序の制約
  • 推移性
  • 特別な場合の std::memory_order_consume
  • 典型的なエラー
  • 待って寝る
  • フェンス <オール>
  • 記憶の壁
  • 記憶の壁を獲得して解放する
  • アルゴリズム <オール>
  • ブロッキング アルゴリズムとノンブロッキング アルゴリズム
  • ABA - A は A と同じではありません
  • スレッド インターフェース

    <オール>
  • スレッド
    <オール>
  • 創造
  • 生涯
  • 引数
  • データの共有
    <オール>
  • リスク
  • ミューテックスよりもロックを好む
  • リーダー/ライター ロック
  • 安全な初期化
  • スレッド ローカル データ
  • 条件変数
  • タスク <オール>
  • std::async
  • std::packaged_task
  • std::promise と std::future
  • 特別な先物 std::async
  • スレッド同期の条件変数とタスク
  • 課題 <オール>
  • データ競合と競合状態
  • 悪意のあるデータ競合
  • ブロッキング アルゴリズムとノンブロッキング アルゴリズム
  • C++17 および C++20 によるマルチスレッド化

    <オール>
  • 概要 <オール>
  • 標準テンプレート ライブラリの並列アルゴリズム
  • アトミック スマート ポインター
  • std::将来の拡張機能
  • ラッチとバリア
  • コルーチン
  • トランザクション メモリ
  • タスク ブロック
  • 執行者
  • ユニファイド フューチャーズ
  • std:::jthread
  • マルチスレッドの適用

    <オール>
  • 時間図書館 <オール>
  • 概要
  • 時点
  • 所要時間
  • 時計
  • 待って寝る
  • CppMem による継続的な最適化
    <オール>
  • 進行中の最適化のコンテキスト
  • CppMem の紹介
  • 非アトミック変数
  • ロック
  • 連続した一貫性
  • 取得と解放のセマンティック
  • データ競合による取得と解放のセマンティック
  • リラックスしたセマンティック
  • 不安定
  • シングルトン <オール>
  • シングルトンのスレッドセーフな初期化
  • std::vector の合計を計算する
    <オール>
  • シングル スレッド
  • 共有変数によるマルチスレッド
  • 最小限の同期でマルチスレッド化
  • 私の結論
  • 食の哲学者問題 <オール>
  • 食事の哲学者の問題 I
  • 食事の哲学者の問題 II
  • 食事の哲学者の問題 III
  • C++ による組み込みプログラミング

    • 組み込みプログラミングの要件
    • 神話と事実

    高い安全要件

    <オール>
  • C++11 <オール>
  • auto による自動型推定
  • {} の初期化で縮小を防ぐ
  • static_assert と型特性ライブラリによるコンパイル時の保証 <オール>
  • static_assert
  • 継続的な改善 - 型特性ライブラリの導入例
  • 種類を確認
  • タイプの比較と変更
  • ユーザー定義のリテラル
    <オール>
  • ユーザー定義のリテラルを使用したタイプ セーフな計算
  • 生と調理済み
  • 厳密に型指定された列挙
  • オーバーライドと最終
  • ヌルポインタ定数 nullptr
  • パフォーマンスが重要

    <オール>
  • C++98 <オール>
  • インライン
  • C++11 <オール>
  • 定数式
    <オール>
  • 変数とオブジェクト
  • 機能
  • 型特性ライブラリによる最適化
  • マルチスレッド インターフェース
  • C++ メモリ モデル
  • ハッシュテーブル <オール>
  • 概要
  • 簡単なパフォーマンス比較
  • ハッシュ関数
  • バケット、容量、負荷率
  • 一般化された POD
  • 例外
  • C++14 <オール>
  • constexpr 関数
  • リソースの慎重な取り扱い

    <オール>
  • 概要
  • 自動メモリ管理
    <オール>
  • スマート ポインター
    <オール>
  • メモリとパフォーマンスのオーバーヘッド
  • std::unique_ptr
  • std::shared_ptr <オール>
  • std::shared_ptr
  • 特技
  • std::weak_ptr
  • STL コンテナ <オール>
  • std::vector と std::string
  • std::配列
  • C++ イディオム
    <オール>
  • ムーブ セマンティック <オール>
  • コピーと移動のセマンティクス
  • 2 つの素晴らしい物件
  • 完璧な転送
  • ガベージ コレクション - いいえ
  • 明示的なメモリ管理
    <オール>
  • 演算子 new と delete のオーバーロード
    <オール>
  • パート 1
  • パート 2
  • std::アロケーター
  • メモリ割り当ての戦略
  • さまざまなメモリ割り当て戦略の長所と短所
  • Jonathan Müller によるメモリ プール アロケータ
  • C++ による関数型プログラミング

    <オール>
  • 概要
  • C++ の機能 <オール>
  • C++98
  • TR1 と C++11
  • ディスパッチ テーブルと汎用ラムダ
  • C++17 および C++20
  • 定義
  • 関数型プログラミングの特徴 <オール>
  • 一流の関数
  • 高階関数
  • 不変データ
  • 純粋関数
  • 再帰
  • リストの操作
  • 遅延評価 <オール>
  • CRTP
  • 表現テンプレート
  • C++17 および C++20 を使用した関数型プログラミング <オール>
  • 折りたたみ式
  • 新しい範囲ライブラリ
  • コンセプト <オール>
  • プレースホルダー
  • C++ のモナド
  • デザイン パターンとアーキテクチャ パターン

    <オール>
  • 最初の概要
  • はじめに <オール>
  • パターンの利点
  • パターンの歴史
  • デザインパターンの分類
  • パターンの分類
  • 用語 <オール>
  • パターンの構造
  • アルゴリズム、フレームワーク、パターンの関係について
  • アンチパターン
  • C++17

    <オール>
  • コア言語 <オール>
  • 詳細
  • 図書館 <オール>
  • std::byte
  • std::ファイルシステム
  • std::string_view
  • std::any、std::optional、および std::variant
  • STL の新しいアルゴリズム
  • 改善された連想コンテナと統一されたコンテナ アクセス
  • GCC コンパイラを使用した STL の並列アルゴリズム
  • 並列 STL アルゴリズムのパフォーマンス
  • C++20

    <オール>
  • 次の大物:C++20
  • 概要 <オール>
  • 四天王
  • コア言語
  • 図書館
  • 同時実行
  • 詳細 <オール>
  • コンセプト <オール>
  • 2 つの極限と概念による救出
  • 詳細
  • プレースホルダーの構文
  • シンタックス シュガー
  • 得られないもの
  • 定義済みの概念
  • コンセプトを定義する
  • 概念の定義 (他の概念またはコンパイル時の述語の論理的な組み合わせ)
  • Requires 式による概念の定義
  • スタンドアロン機能として C++20 で Requires 式を使用する
  • 平等と秩序の概念を定義する
  • レギュラーとセミレギュラーの概念を定義する
  • 概念に基づいて型をチェックする - 動機
  • コンセプトで型をチェック
  • C++20 の概念:進化か革命か?
  • 範囲ライブラリ <オール>
  • Ranges ライブラリ
  • Ranges ライブラリを使用した機能パターン
  • C++20 の Ranges ライブラリ:詳細
  • 範囲のあるプロジェクション
  • 範囲アルゴリズムを使用したセンチネルとコンセプト
  • 範囲付きのイテレータの改善
  • Ranges ライブラリを使用した Python
  • Pythons range 関数、2 番目
  • Python マップ関数
  • コルーチン <オール>
  • 最初の概要
  • 詳細
  • コルーチンによる無限のデータ ストリーム
  • コルーチンによるスレッド同期
  • cppcoro <オール>
  • cppcoro を使用したコルーチン
  • cppcoro による強力なコルーチン
  • cppcoro を使用したスレッド プール
  • co_return :<オール>
  • コルーチンを使用した単純な Future の実装
  • コルーチンを使用した遅延フューチャー
  • Future を別のスレッドで実行する
  • co_yield: <オール>
  • コルーチンによる無限のデータ ストリーム
  • コルーチンを使用した汎用データ ストリーム
  • co_await <オール>
  • コルーチンでジョブを開始する
  • 別のスレッドでコルーチンを使用してジョブを自動的に再開する
  • モジュール <オール>
  • モジュールの利点
  • 簡単な数学モジュール
  • モジュール インターフェース ユニットとモジュール実装ユニット
  • 構造モジュール
  • モジュールへの未解決の質問
  • プライベート モジュール フラグメントとヘッダー ユニット
  • コア言語 <オール>
  • 三方比較演算子 <オール>
  • 三方比較演算子
  • 宇宙船オペレーターへの詳細
  • 宇宙船オペレーターとの最適化された比較
  • 指定された初期化子
  • consteval と constinit
  • 静的初期化命令の失敗を解決する
  • C++20 によるさまざまなテンプレートの改善
  • C++20 によるより強力なラムダ
  • C++20 での Lambda 機能の追加
  • C++20 の新しい属性
  • 揮発性およびその他の小さな改善
  • 図書館 <オール>
  • C++20 の std::span:オブジェクトのシーケンスに対する境界安全なビュー
  • C++20 の constexpr std::vector および std::string
  • C++20 を使用したコンテナの便利な関数
  • std::形式 <オール>
  • 基本
  • ユーザー定義型の std::format を拡張
  • ますます多くのユーティリティ
  • カレンダーとタイムゾーン <オール>
  • 時刻
  • カレンダーの日付
  • カレンダーの日付の処理
  • タイムゾーン
  • 積分の安全な比較
  • 機能テスト
  • ビット操作
  • 同時実行 <オール>
  • アトミック <オール>
  • 参考文献
  • Atomics との同期
  • 条件変数とアトミックのパフォーマンス比較
  • アトミック スマート ポインター
  • セマフォ
  • ラッチ
  • 障壁
  • スレッドの共同中断
  • std::jthread
  • 同期された出力ストリーム
  • C++23

    <オール>
  • C++23 による範囲の改善
  • C++ コア ガイドライン

    <オール>
  • 2 つの非常に価値のあるリソース
  • 最新の C++ のガイドラインが必要なのはなぜですか?
  • C++ コア ガイドライン:<オール>
  • 哲学
  • インターフェース I
  • インターフェース II
  • ガイドライン サポート ライブラリ
  • 関数 <オール>
  • 定義
  • パラメータ:構文
  • パラメータ:セマンティック
  • クラス <オール>
  • 一般規則
  • 0、5、または 6 のルール
  • デストラクタ
  • コンストラクタ
  • コピーして移動
  • 比較、スワップ、ハッシュ
  • 関数オブジェクトとラムダ
  • 階層 <オール>
  • 一般規則
  • 特別ルールⅠ
  • 特別ルール II
  • オブジェクトへのアクセス
  • 過負荷 <オール>
  • オーバーロードと演算子のオーバーロード I
  • オーバーロードとオーバーロード演算子 II
  • 組合
  • 列挙型
  • リソース <オール>
  • 一般規則
  • メモリの割り当てと解放
  • スマート ポインタ
  • スマート ポインタの受け渡し
  • 表現とステートメント <オール>
  • 宣言
  • 宣言と初期化
  • 宣言に関するその他のルール
  • 式 (ポインタ)
  • コンバージョンとキャスト
  • 禁止事項に関する規則 (std::move とスライス)
  • 声明のルール
  • 切り替えるかどうか、それが問題です
  • 制御構造の詳細
  • 算術規則
  • パフォーマンス <オール>
  • パフォーマンスに関するルール
  • パフォーマンスに関するその他のルール
  • パフォーマンスに関する残りのルール
  • 並行性と並列性 <オール>
  • 同時実行と並列処理に関する規則
  • 並行処理と並列処理に関するその他の規則
  • 並行コードを検証するツール
  • スレッド間でデータを共有する
  • 子供の世話
  • 同時実行におけるさらなるトラップ
  • 条件変数の罠に注意
  • 並行性とロックフリー プログラミング
  • なぞなぞの解決
  • ロックフリー プログラミングに関するその他の規則
  • エラー処理 <オール>
  • エラー処理のルール
  • C++20 のコントラクトへのちょっとした寄り道
  • noexcept 指定子と演算子
  • 例外処理に関する規則
  • ついに C++ に
  • 悪とみなされる
  • 定数と不変性
  • テンプレートと汎用プログラミング <オール>
  • テンプレートとジェネリック プログラミングのルール
  • タイプ消去
  • テンプレートによるタイプ消去
  • 具体的か一般的か
  • 概念の使用法
  • 概念の定義
  • 概念の定義 2
  • 関数オブジェクトを操作として渡す
  • テンプレート インターフェース
  • レギュラー型とセミレギュラー型
  • 引数依存のルックアップによるサプライズ
  • テンプレートの定義
  • ユーザー定義型の順序付け
  • テンプレートと階層
  • Variadic テンプレートのルール
  • テンプレート メタプログラミングのルール
  • コンパイル時のプログラミング
  • 型特性を使用したコンパイル時のプログラミング
  • 型特性を使用したコンパイル時のプログラミング (その 2)
  • constexpr を使用したコンパイル時のプログラミング
  • その他のテンプレート ルール
  • 関数テンプレートの特殊化によるサプライズ インクルード
  • テンプレート:誤解と驚き
  • テンプレート パラメータとしての型、非型、およびテンプレート
  • C スタイルのプログラミング <オール>
  • C と C++ の混合
  • ソース <オール>
  • ソース ファイル
  • ソース ファイルに関する残りのルール
  • モジュール
  • モジュールの詳細
  • 標準ライブラリ <オール>
  • 標準ライブラリ
  • std::array と std::vector はあなたの友達です
  • std::map と std::unordered_map でより特別な友達
  • 境界エラーを回避
  • 文字列のルール
  • IOストリーム
  • ストリームの入出力
  • Iostream によるパフォーマンスの向上
  • 正規表現ライブラリ
  • 正規表現ライブラリに関するその他のルール
  • RAII が壊れたとき
  • サポート セクション <オール>
  • 建築のアイデア
  • 非規則と神話 <オール>
  • その他の非規則と神話
  • 私のブログ読者の誤解
  • 私のブログの読者に関するその他の誤解
  • プロフィール <オール>
  • タイプ セーフティ
  • 型安全設計
  • 境界の安全性
  • 生涯の安全とルールの確認
  • 命名規則とレイアウト規則
  • テンプレート

    <オール>
  • 最初のステップ
  • 基本 <オール>
  • 関数テンプレート
    <オール>
  • 関数テンプレート
  • 詳細:明示的なテンプレートの引数と概念
  • クラス テンプレート <オール>
  • クラス テンプレート
  • 驚きの内容:クラス テンプレートの継承とメンバー関数
  • エイリアス テンプレートとテンプレート パラメータ
  • テンプレートの引数 <オール>
  • テンプレート引数
  • クラス テンプレートのテンプレート引数推定
  • テンプレートの専門化 <オール>
  • テンプレートの専門化
  • クラス テンプレートの詳細
  • 関数テンプレートの完全な特殊化
  • 詳細 <オール>
  • テンプレートのインスタンス化
  • 可変個引数テンプレートと折り畳み式
    <オール>
  • Variadic テンプレートまたは 3 つのドットの力
  • Variadic テンプレートの詳細 ...
  • Variadic テンプレートから Fold 式まで
  • パラメータ パックと折り畳み式を使用したスマート トリック
  • オーバーロード パターンで std::variant にアクセスする
  • テンプレートの特別な友情
  • 従属名
  • テクニック <オール>
  • 自動返却タイプ
    <オール>
  • 自動戻り型 (C++98)
  • 自動リターン型 (C++11/14/20)
  • テンプレートのメタプログラミング <オール>
  • すべての始まり
  • 仕組み
  • ハイブリッド プログラミング
  • 型特性ライブラリ <オール>
  • 型チェック
  • 型の比較
  • std::is_base_of
  • 正しさ
  • パフォーマンス
  • constexpr <オール>
  • constexpr 機能
  • constexpr そして consteval C++20 の関数
  • constexpr if
  • デザイン <オール>
  • 動的ポリモーフィズムと静的ポリモーフィズム
  • CRTP <オール>
  • 動的ポリモーフィズムと静的ポリモーフィズムの詳細
  • ミックスイン
  • 式テンプレートで一時的なものを避ける
  • ポリシー
  • 特性とタグのディスパッチ
  • A std::advance C++98、C++11、および C++20 に基づく実装
  • タイプ消去
  • レビュー

    <オール>
  • クリーンな C++
  • ニュース

    <オール>
  • 新しいものはありません
  • CppCon 2018
  • Meeting Embedded と Meeting C++ 2018
  • Compiler Explorer、PVS-Studio、ひどい単純なバグ
  • Quo Vadis - Modernes C++
  • ツール

    <オール>
  • C++ インサイト
    <オール>
  • 暗黙の変換
  • 型推論
  • テンプレートのインスタンス化
  • 可変個引数テンプレート
  • ラムダ