Class MultiQueueBarrier


  • public class MultiQueueBarrier
    extends Object
    An utility for synchronizing multiple concurrent CLCommandQueues. This Barrier can be reused after it has been broken.
    Author:
    Michael Bien
    • Constructor Detail

      • MultiQueueBarrier

        public MultiQueueBarrier​(int queueCount)
        Creates a new MultiQueueBarrier with the given queueCount. It is recommented to use MultiQueueBarrier(CLCommandQueue... allowedQueues) if possible which restricts the set of allowed queues for the barrier.
      • MultiQueueBarrier

        public MultiQueueBarrier​(CLCommandQueue... allowedQueues)
        Creates a new MultiQueueBarrier for the given queues.
    • Method Detail

      • waitFor

        public MultiQueueBarrier waitFor​(CLCommandQueue queue)
        Blocks the current Thread until all commands on the CLCommandQueue finished excecution. This method may be invoked concurrently without synchronization on the MultiQueueBarrier object as long each Thread passes a distinct CLCommandQueue as parameter to this method.
      • waitFor

        public MultiQueueBarrier waitFor​(CLCommandQueue queue,
                                         CLEventList events)
        Blocks the current Thread until the given events on the CLCommandQueue occurred. This method may be invoked concurrently without synchronization on the MultiQueueBarrier object as long each Thread passes a distinct CLCommandQueue as parameter to this method.
      • await

        public boolean await​(long timeout,
                             java.util.concurrent.TimeUnit unit)
                      throws InterruptedException
        Parameters:
        timeout - the maximum time to wait
        unit - the time unit of the timeout argument
        Throws:
        InterruptedException
        See Also:
        await()
      • resetBarrier

        public void resetBarrier()
        Resets this barrier and unblocks all waiting threads.
      • getCount

        public long getCount()
        Returns the current number of events which must occure before this barrier unblocks the waiting threads. This method is typically used for debugging and testing purposes.