76 |
|
* |
77 |
|
* A FIFO dual queue may be implemented using a variation of the |
78 |
|
* Michael & Scott (M&S) lock-free queue algorithm |
79 |
< |
* (http://www.cs.rochester.edu/u/scott/papers/1996_PODC_queues.pdf). |
79 |
> |
* (http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf). |
80 |
|
* It maintains two pointer fields, "head", pointing to a |
81 |
|
* (matched) node that in turn points to the first actual |
82 |
|
* (unmatched) queue node (or null if empty); and "tail" that |
678 |
|
s.forgetContents(); // avoid garbage |
679 |
|
return LinkedTransferQueue.<E>cast(item); |
680 |
|
} |
681 |
< |
if ((w.isInterrupted() || (timed && nanos <= 0)) && |
681 |
> |
if ((w.isInterrupted() || (timed && nanos <= 0L)) && |
682 |
|
s.casItem(e, s)) { // cancel |
683 |
|
unsplice(pred, s); |
684 |
|
return e; |