ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/LockLoops.java
(Generate patch)

Comparing jsr166/src/test/loops/LockLoops.java (file contents):
Revision 1.12 by jsr166, Wed Jun 8 20:01:45 2016 UTC vs.
Revision 1.13 by jsr166, Wed Jun 8 20:11:01 2016 UTC

# Line 137 | Line 137 | public final class LockLoops {
137                  System.out.print("StampedLockRead    ");
138              new StampedLockReadLoop().test(v, nthreads, iters);
139              Thread.sleep(10);
140 +
141 +            if (print)
142 +                System.out.print("StampedLockReadWrite");
143 +            new StampedLockReadLoop().test(v, nthreads, iters);
144 +            Thread.sleep(10);
145          }
146      }
147  
# Line 421 | Line 426 | public final class LockLoops {
426                  }
427                  sum += LoopHelpers.compute2(v);
428              }
429 +            return sum;
430 +        }
431 +    }
432 +
433 +    private static class StampedLockReadWriteLoop extends LockLoop {
434 +        private final StampedLock lock = new StampedLock();
435 +        final int loop(int n) {
436 +            int sum = 0;
437 +            while (n-- > 0) {
438 +                int x;
439 +                long stamp = lock.readLock();
440 +                try {
441 +                    x = LoopHelpers.compute1(v);
442 +                }
443 +                finally {
444 +                    lock.unlockRead(stamp);
445 +                }
446 +                stamp = lock.writeLock();
447 +                try {
448 +                    v = x;
449 +                } finally {
450 +                    lock.unlockWrite(stamp);
451 +                }
452 +                sum += LoopHelpers.compute2(v);
453 +            }
454              return sum;
455          }
456      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines