该类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);
您会在<intrin.h>
.
于 2011-08-08T10:01:43.960 回答