2016-08-19 2 views
1

C++のトランザクションメモリの提案の現在の状態は何ですか?17。これは標準に含まれる予定で、標準C++の将来のバージョンに含まれることを目指しているのか、あるいは実験的な概念実証機能に過ぎないのですか?標準C++トランザクションメモリの状態

標準化委員会の文書のいくつかは、ここでは矛盾したコミュニケーションを提供するように思われるので、私は尋ねています。一方で、トランザクションメモリが標準化されないと言っているP0265R0(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0265r0.pdf)があります。StroustrupのN4492論文(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4492.pdf)とトランザクションメモリがC++ 17の機能リストにリストされています。

答えて

3

短期間:トランザクションメモリTSは既に公開されており、2番目のバージョンが開発中です。しかし、委員会はそれを近くの基準で標準に含める予定はない。この選択にはいくつかの理由があります。

  • 実装の経験が不十分です。 GCC6以降、g ++だけがそれを実装しています。 TSの目標は、部分的に実装とユーザーエクスペリエンスを集めることです。そのような大きな特徴はそれに関してまだ未熟なままです。

  • すべてのターゲットでトランザクションメモリがサポートされているわけではなく、すべての人がそれを必要とするわけではありません。これらの理由から、委員会は、TSが主要なC++標準の一部であるべきかどうかは明らかではありません。永遠にTSとして生きているかもしれません。

  • また、トランザクションメモリTSのすべての機能がメインのC++標準に含まれていると誰もが信じているわけではありません。一部の人は​​が主な特徴であると考えていますが、他の人は原子ブロックが実際のゲームチェンジャーだと考えています。 TS になります。ライブラリの作成者が処理しなければならないもう1つのコグニティブなオーバーヘッドが追加されます(一般的には良いとは言えない新しいキーワードもいくつかあります)。

+0

しかし、それはAFAICTの唯一の構成可能なテクニックなので、残念です。基本的に、並行プログラミングは、15年前のように、最初からコーディングする必要があります(何も構成可能ではないので、再利用可能なビルディングブロックはありません)。 –

+0

@AmiTavoryトランザクションがより構成可能で、なぜそうなのでしょうか? –

+1

@ JanusTroelsen mutexまたはlockfreeプリミティブのいずれかを使用して、ハッシュテーブル用のいくつかの超クールな並行アルゴリズムを示すプロジェクトがあるとします。次に、リンクされたリストで同じものを探します。次に、ハッシュテーブルとリンクリストを使用してLRUキャッシュを構築します。これらのソリューションの組み合わせであるAFAIUは、問題の組み合わせに対する解決策ではありません(ハッシュテーブルとリストが並行しているだけでは不十分で、LRUの状態が矛盾する可能性があります)。ただし、TSMハッシュ・テーブルおよびリンク・リストを使用すると、TSM LRUを簡単に構築できます。 –