クラスConcurrency::unbounded_buffer
には、任意の数のメッセージを格納できます。しかし、保留中の (受信されていない) メッセージの数を知る方法は?
質問する
532 次
1 に答える
2
これを行うための機能は組み込まれていません。
整数をアトミックにインクリメント/デクリメントすることもできますが、同時にアクセスしている場合、これは信頼できるカウントではないことを知っておいてください(球場のみ)。
long count;
Concurrency::unbounded_buffer<T> buffer;
if(Concurrency::send(buffer, T()))
{
long new_count = _InterlockedIncrement(&count);
}
そして他の場所:
T value = Concurrency::receive(buffer);
long new_count = _InterlockedDecrement(&count);
_Interlocked関数はにあり<intrin.h>
ます。
于 2011-08-08T10:01:43.960 に答える