新しいc++機能std::async
が2つのC#キーワードasync / awaitに非常に匹敵するかどうか、そうでない場合はその理由を知りたいのですが。
2 に答える
私がこのstd::asyncのドキュメントを正しく読んでいると仮定すると、実際にはそうではありません。
C#5のasync / await機能には、非同期メソッドの複雑なコンパイラ変換が含まれているため、ほぼ同期しているように見えますが、非同期のポイントがあるコードを記述できます。コンパイラはステートマシンを構築し、適切なコールバックなどを作成します。
編集:私は以前、コールバックを明示的に渡すことを強制したと信じていstd::async
ましたが、それよりもさらに原始的であるように見えます。いずれにせよ、それはほとんど/完全にライブラリ機能であると思いますが、C#5の非同期メソッドは、ほとんどがライブラリをサポートする言語機能です。
編集:コメントでさらに述べたように、VC++に向かっているようです...
CPPASYNC(別の回答で提供)はあなたが探しているもののように見えます。「非同期」の部分は簡単で、パフォーマンスは良好に見えます(C#の実装よりも優れている可能性があります)。非同期コールバック呼び出しの周りに特別な「Await」ラッパーが必要なのは醜いです。いくつかのBoostネットワーキングが提供されており、それらは簡単に作成できますが、何かを「待つ」ことはできません。任意のメソッド/関数を
非同期にします。非同期関数内で、次のいずれかを待ちます
。-非同期関数
-awaitラッパー(単純なmake)非同期関数(コールバックを取る)の周り