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);

您会在<intrin.h>.

于 2011-08-08T10:01:43.960 回答