Skip to content

Commit 95f2b12

Browse files
authored
Merge pull request #44 from nox213/master
Fix index initialization and loop termination condition of `LockFreePool`'s `remove` method
2 parents d9b0ac3 + db8a7ce commit 95f2b12

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/main/scala/org/learningconcurrency/ch3/LockFreePool.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ object LockFreePool {
3333
def remove(): Option[T] = {
3434
val start = (Thread.currentThread.getId % buckets.length).toInt
3535
@tailrec def scan(witness: Long): Option[T] = {
36-
var i = (start + 1) % buckets.length
36+
var i = start
3737
var sum = 0L
38-
while (i != start) {
38+
do {
3939
val bucket = buckets(i)
4040

4141
@tailrec def retry(): Option[T] = {
@@ -55,7 +55,7 @@ object LockFreePool {
5555
}
5656

5757
i = (i + 1) % buckets.length
58-
}
58+
} while (i != start)
5959
if (sum == witness) None
6060
else scan(sum)
6161
}

0 commit comments

Comments
 (0)