mirror of
https://github.com/openjdk/jdk.git
synced 2026-06-11 13:05:45 +00:00
Addressing the same live-lock issue found in AQS in AQLS and StampedLock
This commit is contained in:
parent
70e4bc9708
commit
22d9ce4b6d
@ -452,7 +452,8 @@ public abstract class AbstractQueuedLongSynchronizer
|
||||
if (q.status < 0) { // cancelled
|
||||
if ((s == null ? casTail(q, p) : s.casPrev(q, p)) &&
|
||||
q.prev == p) {
|
||||
p.casNext(q, s); // OK if fails
|
||||
if (s != null)
|
||||
p.casNext(q, s); // OK if fails
|
||||
if (p.prev == null)
|
||||
signalNext(p);
|
||||
}
|
||||
|
||||
@ -1450,7 +1450,8 @@ public class StampedLock implements java.io.Serializable {
|
||||
if (q.status < 0) { // cancelled
|
||||
if ((s == null ? casTail(q, p) : s.casPrev(q, p)) &&
|
||||
q.prev == p) {
|
||||
p.casNext(q, s); // OK if fails
|
||||
if (s != null)
|
||||
p.casNext(q, s); // OK if fails
|
||||
if (p.prev == null)
|
||||
signalNext(p);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user