Я пытался использовать уже написанный Wait свободной очереди на Алекс Коган и Эрез Петранк взяты из here, но столкнулись с проблемой. Я не могу понять, что именно нужно использовать в que()
и deque()
методов на странице 5 и 7 нить ID:Wait-свободная реализация очереди в JAVA
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" означает _unique IDentifier_. Основные требования к идентификатору потока - это то, что каждый поток должен иметь один, и каждый идентификатор потока должен отличаться от идентификатора каждого другого потока, и идентификатор потока никогда не может измениться. Для любого потока Java 't' число, возвращаемое' t.getId() ', будет соответствовать этим требованиям. –