我一直在尝试使用Alex Kogan和Erez Petrank从此处获取的已编写的免等待队列,但遇到了问题。que()
我无法理解第 5 页和第 7 页上的方法和方法中需要使用的确切线程 ID deque()
:
void enq(int value) {
long phase = maxPhase() + 1; // cf. Figure 3b
state.set(TID, new
OpDesc(phase, true, true, new Node(value, TID)));
help(phase);
help finish enq();
}
和
int deq() throws EmptyException {
long phase = maxPhase() + 1; // cf. Figure 5a
state.set(TID, new OpDesc(phase, true, false, null));
help(phase);
help finish deq();
Node node = state.get(TID).node;
if (node == null) {
throw new EmptyException();
}
return node.next.get().value;
}
应该使用什么线程 ID?