Disruptor 问题请教

bang ,你好:
我在移植Disruptor到.net版本的是遇到个问题,如果你看到这个帖子望指教下哦,谢谢。
问题描述:
类,MultiProducerSequencer 代码片段如下:


/**
* @see Sequencernext(int)
*/

@Override
public long next(int n)
{
if (n < 1)
{
throw new IllegalArgumentException(
"n must be > 0");
}

long current;
long next;

do
{
current = cursor.get();
next = current + n;

long wrapPoint = next - bufferSize;
long cachedGatingSequence = gatingSequenceCache.get();

if (wrapPoint > cachedGatingSequence || cachedGatingSequence > current)
{
long gatingSequence = Util.getMinimumSequence([b]gatingSequences[/b], current);
if (wrapPoint > gatingSequence)
{
LockSupport.parkNanos(1);
// TODO, should we spin based on the wait strategy?
continue;
}

gatingSequenceCache.set(gatingSequence);
}
else if (cursor.compareAndSet(current, next))
{
break;
}
}
while (true);

return next;
}

这个方法执行完后gatingSequences 的值都变为next 变量的值,但源代码中并没有显示设置gatingSequences 的值,请问是如何改变gatingSequences 的值的呢?

gatingSequenceCache.set(gatingSequence);这不是设置了么?

2013-08-20 12:00 "@gong1
"的内容
gatingSequenceCache.set(gatingSequence);这不是设置了么? ...


不是同一个变量哦 gatingSequence 是个long型临时变量,gatingSequences是个 Sequence[] 型数组

已搞定