RFR: 8301341: LinkedTransferQueue does not respect timeout for poll() [v5]

Viktor Klang duke at openjdk.org
Thu Jul 13 22:47:21 UTC 2023


On Fri, 30 Jun 2023 19:38:19 GMT, Doug Lea <dl at openjdk.org> wrote:

>> This now uses Thread.isVirtual to distinguish spin vs immediate block cases, enabling re-introduction of spin control from the previous version, removing anomalies like this one.
>
> Doug Lea has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix inverted test assert; improve internal documentation; simplify code

src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java line 144:

> 142:      * nodes, CASing from null to a data value.  (To reduce the need
> 143:      * for re-reads, we use the compareAndExchange forms of CAS for
> 144:      * pointer updates, that provide the current value to comtinue

Suggestion:

     * pointer updates, that provide the current value to continue

src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java line 158:

> 156:      * suffix of zero or more unmatched nodes. Note that we allow both
> 157:      * the prefix and suffix to be zero length, which in turn means
> 158:      * that we do not require a dummy header.

@DougLea Great to avoid having the dummy header 👍

src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java line 484:

> 482:      * be at least 4.
> 483:      */
> 484:     private static final int MAX_SLACK = 1 << 7;

@DougLea Any guidance on how to tune this parameter? 🤔

src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java line 570:

> 568:         boolean haveData = (e != null);
> 569:         TransferNode p;                     // current traversal node
> 570:         TransferNode s = null;              // the enqueued npde, if needed

Suggestion:

        TransferNode s = null;              // the enqueued node, if needed

src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java line 133:

> 131:      *     compareAndExchange form of CAS for pointer updates to reduce
> 132:      *     memory traffic. The Fifo version accommodates lazy
> 133:      *     updates and slack as desxcribed in the LinkedTransferQueue

Suggestion:

     *     updates and slack as described in the LinkedTransferQueue

src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java line 136:

> 134:      *     internal documentation.
> 135:      *  2. SynchronousQueues must block threads waiting to become
> 136:      *     fulfilled, preceded by brief spins at/mear front positions

Suggestion:

     *     fulfilled, preceded by brief spins at/near front positions

src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java line 148:

> 146:     /**
> 147:      * Extension of LinkedTransferQueue to support Lifo (stack) mode.
> 148:      * Methods use tha "tail" field as top of stack (versus tail of

Suggestion:

     * Methods use the "tail" field as top of stack (versus tail of

src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java line 149:

> 147:      * Extension of LinkedTransferQueue to support Lifo (stack) mode.
> 148:      * Methods use tha "tail" field as top of stack (versus tail of
> 149:      * queue). Note that popped nodes are not self-linked because thay

Suggestion:

     * queue). Note that popped nodes are not self-linked because they

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1250693753
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1250699320
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1255848871
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1251121355
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1250629998
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1250630384
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1250637093
PR Review Comment: https://git.openjdk.org/jdk/pull/14317#discussion_r1250637972


More information about the core-libs-dev mailing list