0
クラスConcurrency::unbounded_buffer
には、任意の数のメッセージを格納できます。しかし、保留中の(受信していない)メッセージの数を知る方法は?'unbounded_buffer'のメッセージ数
クラスConcurrency::unbounded_buffer
には、任意の数のメッセージを格納できます。しかし、保留中の(受信していない)メッセージの数を知る方法は?'unbounded_buffer'のメッセージ数
これを行うための機能は組み込まれていません。
あなたができることは、それと並んで整数をアトミックに増減することですが、同時にアクセスされている場合、これは信頼できるカウント(球場のみ)ではないことがわかります。
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);
あなたは<intrin.h>
に_Interlocked機能を見つけることができます。
はい、あなたは正しいです - この情報を得るための既存のアクセス機能/メンバーはありません。 '_Queue'をタイプすると' _M_message_buffer'を見つけました。 '_Queue'クラスは' _Count'メソッドを持っています。しかし、残念ながら、( '_Queue'型の)この変数は' unbounded_buffer'クラスでprivateとして宣言されています – Ajay