以下是枚举消息的代码。
MessageQueue queue = // ... some local private queue
Cursor cursor = queue.CreateCursor();
Message msg = queue.Peek(timeout, cursor, PeekAction.Current);
while( msg != null )
{
// ... process
msg = queue.Peek(timeout, cursor, PeekAction.Next);
}
假设队列中有100条HIGH优先级消息和10000条LOW优先级消息。
所以它会按照以下顺序查看消息。
HIGH #1
HIGH #2
HIGH #3
...
HIGH #99
HIGH #100
LOW #101
LOW #102
...
LOW #10000
现在假设代码开始运行,它首先处理100个HIGH优先级消息,然后开始处理低优先级消息。
在某些时候,它会在下面查看低优先级。
LOW #8243 <-- cursor is here now
LOW #8244
...
LOW #10000
现在新的HIGH优先级消息到达队列。
我的问题是:
下次调用queue.Peek(timeout, cursor, PeekAction.Current)
时,是否会立即查看HIGH优先级消息?