0

クラスConcurrency::unbounded_bufferには、任意の数のメッセージを格納できます。しかし、保留中の (受信されていない) メッセージの数を知る方法は?

4

1 に答える 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 に答える