private boolean recalculateProducerLimit(long pIndex, long producerLimit, long cIndex, long bufferCapacity, long threshold)
    {
        // try to update the limit with our new found knowledge on cIndex
        if (cIndex + bufferCapacity > pIndex)
        {
            casProducerLimit(producerLimit, cIndex + bufferCapacity);
        }
        // full and cannot grow, or hit threshold
        long size = pIndex - cIndex;
        return size < threshold && size < bufferCapacity;
    }
{@link #offer} if {@link #size()} is less than threshold.

@param e         the object to offer onto the queue, not null
@param threshold the maximum allowable size
@return true if the offer is successful, false if queue size exceeds threshold
@since 3.0.1
jctools-core/src/main/java/org/jctools/queues/MpscBlockingConsumerArrayQueue.java