問題タブ [c++14]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - N3600 の「latch」サンプルに競合状態はありますか?
C++14 (別名 C++1y) に含めることが提案されているのは、いくつかの新しいスレッド同期プリミティブ (ラッチとバリア) です。提案は
良いアイデアのように思えますし、サンプルを見ると非常にプログラマーフレンドリーに見えます。残念ながら、サンプル コードは未定義の動作を呼び出すと思います。提案は次のように述べていlatch::~latch()
ます:
ラッチを破棄します。他のスレッドが にある
wait()
、または呼び出している間にラッチが破棄された場合count_down()
、動作は未定義です。
使用の説明として、wait()
「ブロックされている」ではなく「で」と表示されていることに注意してください。wait()
count_down()
次に、次のサンプルが提供されます。
2 番目のユースケースの例を以下に示します。データをロードしてから、多数のスレッドを使用して処理する必要があります。データのロードは I/O バウンドですが、スレッドの開始とデータ構造の作成は CPU バウンドです。これらを並行して実行することで、スループットを向上させることができます。
wait()
スレッドのウェイクアップと からの復帰、およびスコープを離れるときのラッチの破壊との間に競合状態はありませんか? それに加えて、すべてのthread
オブジェクトがリークされます。count_down
スケジューラが返される前にすべてのワーカー スレッドを実行せず、start_latch
オブジェクトがスコープを離れる場合、未定義の動作が発生すると思います。おそらく、修正はベクトルとjoin()
すべてdelete
のワーカースレッドを繰り返してcount_down
から返すことです。
- サンプルコードに問題はありますか?
- レビュアーが使用体験がどのようなものになるかを確認するために、タスクが非常に単純であっても、提案は完全に正しい例を示すべきであることに同意しますか?
注: 1 つ以上のワーカー スレッドがまだ待機を開始していない可能性があるためwait()
、破棄されたラッチを呼び出します。
更新: 現在、提案の新しいバージョンがありますが、代表的な例は変更されていません。
c++ - C++14 のネットワーク ライブラリ
Herb Sutter は、ネットワーク ライブラリが C++14 に追加される予定であると (彼の ISO C++ Spring 2013 ミーティング旅行レポートで)ここに書いています。
このライブラリには、最初はどのような機能がありますか? それは何に基づいていますか?概念実証の実装はありますか? 提案書の草稿さえ見つからないので、私の Google-fu は深刻に不足しているに違いありません。
http://meetingcpp.com/には一連のブログ投稿があり、C++14 の提案をリストしています:パート 1、パート 2、パート 3およびパート 4。これらすべての中で、ネットワーク関連の提案を 2 つだけ見つけることができます。
- N3555 - C++ 用の URI ライブラリ(申し訳ありませんが、リンクはありません。ただし、その前身はN3507です。)
- N3603 - Three-Class IP Address の提案(関連する以前の論文N3565 - IP Address Design Constraintsを使用)。
これで全部ですか?C++ ネットワーク ライブラリにはこれらの機能しかありませんか? 私は、これらが投票を通過したかどうかさえ知りません。Michael Wong による同じ会議の2 部構成のレビュー (2013 年 4 月、ブリストル) では、それらについて言及さえしていないからです。
c++ - GCC バイナリ リテラルと C++14 の違いは?
C++14 が登場するようで、コンパイラはすでにこの新しいリビジョンのコア機能を実装しようとしています。これらのコア機能の GCC サポートを調べていたところ、バイナリ リテラルの部分に気付きました。GCC はそれらを実装していますが、GNU バイナリ リテラルと C++14 バイナリ リテラルの間に違いがあるようです。両方のそれぞれの参照は次のとおりです。
GCCが違いを生むように見えるので、2つの違いを見つけようとしましたが、何も見つかりませんでした。非互換性の可能性について詳しく知っている人はいますか?
c++ - 条件変数の型と初期化のための C++1y テンプレート変数
次のようなコードがあります。
このファイルは、マクロ DIMENSIONS を再定義する他のユーザーによってインクルードされます。私がしたいのは次のようなものです:
どちらの場合もコードの 99% が同一であるため、関数テンプレートの特殊化またはタグ ディスパッチを使用したくありません。すでに持っていたのと同じ関数構成と、変数 a のローカル セマンティクスを保持したいと思います。質問は次のとおりです。
この状況でマクロを使用しないようにするにはどうすればよいですか?
ここで C++1y テンプレート変数を使用できますか? 以下は機能しますか?
関数自体の内部で特殊化されたステンシル テンプレート変数を宣言できますか?
c++ - C++抽象クラスは不完全型ですか?
不完全な型はインスタンス化できず、抽象クラス (つまり、純粋仮想メンバー関数を持つクラス) もインスタンス化できません。
ひょっとして、抽象クラス自体が不完全型と見なされるのでしょうか?
c++ - make_unique 配列、元の提案と最終的な提案
Stephan T Lavavej の最初の提案make_unique
はN3588 でした
次の機能が含まれていました。
ただし、最終的な提案であるN3656make_unique
には、 (両方の形式)しか含まれていません。関数の他の形式に関する議論を見つけることができません。私はブリストル会議の議事録を読みましたが、元の提案にさえ言及していません。
これらの追加機能が最終草案に含まれていなかったのはなぜですか?