2017-02-25 7 views
-2

私には「ヤウ」という変数があります。 meowは25に等しくなります。非同期に実行する2つの関数もあります。ある時点では、これらの関数の両方が、meow変数の値にアクセスし、その変数に3を加えて変更する必要があります。しかし、ここで問題があります。非同期関数の1つがこの更新プロセスを低速で実行している場合、もう一方は非同期関数が完了するまで待機する必要があります。ある意味では、meow変数にアクセス/変更するためにキューを作成する必要があります。これはプログラミング言語のメタによるとC++でどのようにしばしば行われますか?変数の読み込みと更新にキューイングを追加する方法は?

+1

「プログラミング言語のメタに従う」 - それは何ですか? –

+0

申し訳ありませんがわからない場合は、C++ VSでこれを行うための "goto"メソッドが何であるかを尋ねるだけです。 – slimshady

+0

これはまだ明らかではありませんが、http://en.cppreference.com/w/cpp/threadを見てください。 –

答えて

0

アトミックとmutexの2つの主な選択肢があります。 1つの共有変数をインクリメントするだけで、インクリメントが発生する順序に気にしない場合は、アトミック変数を使用できます。

詳しくは、the documentation for std::atomicを参照してください。以下に、myatomというアトミック変数を3つ増やす方法を示します。 myatom 3.

atomic<>テンプレートに設定されることになるmyatomfetch_addを呼び出す前に0であった場合、関数は0を返すとなるよう

myatom.fetch_add(3); 

fetch_addその戻り動作前の値、算術演算子もオーバーロードしますが、メンバ関数を使用して、操作がアトミック変数を処理していることを明確にしたいと考えています。問題を追跡するのが簡単になります。

関連する問題