2010-12-13 18 views
6

私は新しいVisual StudioネイティブConcurrencyランタイム(ConcRT)を使用しています。それは単なる見落としですか、またはデータのクロススレッドの動きには移動セマンティクスがないという妥当な理由がありますか?それらはすべてコピーのセマンティクスです。並行キューに移動することはできず、asendなどでは移動することもできません。並行キューを構築することさえできません。並行処理でRvalue refs

+0

Hehe、CCRに関するこのスターターページに明示的に*記載されています:http://msdn.microsoft.com/en-us/library/dd504870.aspx C + + 0x改善このようなコードはしばらくシチューです。 –

+1

@ハンス:それは一般的な "我々はMSVC10でこれをサポートしています"としての評価基準ですが、特にCCRには何もありません。 – Puppy

+0

私はちょうどそれがCCRのスターターページに記載されているのは面白いと思った。 –

答えて

3

私はこの特定のフレームワークについてはわかりませんが、一般的にスレッド間キューの場合はコピーのセマンティクスが必要です。

オブジェクトを作成し、参照/ポインタを取得してキューに移動するとします。次に、もう一方のスレッドはキューからそれを移動します。両方のスレッドが同時にアクセスできます。

一般的なケースでは、追加と削除の両方を同時に行う必要はないと思います(つまり、コピーは1つだけ必要です)。例えばcopy-in move-outであるが、これは意味的にcopy-in copy-outと同じである。

1

rvalueサポートがConcRT、エージェントおよびPPLを強化することができるいくつかの領域があります。大きなソフトウェアプロジェクトのように、他の新機能に依存する機能を構築する場合、すべてを一度に配信できるというリスクは常にあります。

PPLは大きな前進でしたが、「完了」とは決して言いませんでした。 :-)

ConcRT、PPL、またはエージェントライブラリが移動セマンティクスをサポートする必要がある場合は、connect.microsoft.comで提案をお待ちください。