19

新しいc++機能std::asyncが2つのC#キーワードasync / awaitに非常に匹敵するかどうか、そうでない場合はその理由を知りたいのですが。

4

2 に答える 2

23

私がこのstd::asyncのドキュメントを正しく読んでいると仮定すると、実際にはそうではありません。

C#5のasync / await機能には、非同期メソッドの複雑なコンパイラ変換が含まれているため、ほぼ同期しているように見えますが、非同期のポイントがあるコードを記述できます。コンパイラはステートマシンを構築し、適切なコールバックなどを作成します。

編集:私は以前、コールバックを明示的に渡すことを強制したと信じていstd::asyncましたが、それよりもさらに原始的であるように見えます。いずれにせよ、それはほとんど/完全にライブラリ機能であると思いますが、C#5の非同期メソッドは、ほとんどがライブラリをサポートする言語機能です。

編集:コメントでさらに述べたように、VC++に向かっているようです...

于 2011-03-31T10:59:10.360 に答える
1

CPPASYNC(別の回答で提供)はあなたが探しているもののように見えます。「非同期」の部分は簡単で、パフォーマンスは良好に見えます(C#の実装よりも優れている可能性があります)。非同期コールバック呼び出しの周りに特別な「Await」ラッパーが必要なのは醜いです。いくつかのBoostネットワーキングが提供されており、それらは簡単に作成できますが、何かを「待つ」ことはできません。任意のメソッド/関数を

非同期にします。非同期関数内で、次のいずれかを待ちます
。-非同期関数
-awaitラッパー(単純なmake)非同期関数(コールバックを取る)の周り

于 2013-02-09T09:02:32.630 に答える