org.apache.sysds.runtime.controlprogram.parfor

## Class LocalTaskQueue<T>

- java.lang.Object
- - org.apache.sysds.runtime.controlprogram.parfor.LocalTaskQueue<T>

-     public class LocalTaskQueue<T>
      extends Object

  This class provides a way of dynamic task distribution to multiple workers in local multi-threaded environments. Its main purpose is inter-thread communication for achieving dynamic load balancing. A good load balance between parallel workers is crucial with regard to the overall speedup of parallelization (see Amdahl's law). From a technical perspective, a thread monitor concept is used for blocking of waiting writers and readers. Synchronized writes and reads ensure that each task is only read by exactly one reader. Furthermore, the queue is implemented as a simple FIFO.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `MAX_SIZE`
    `static Object` | `NO_MORE_TASKS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocalTaskQueue()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `closeInput()` Synchronized (logical) insert of a NO_MORE_TASKS symbol at the end of the FIFO queue in order to mark that no more tasks will be inserted into the queue.
    `T` | `dequeueTask()` Synchronized read and delete from the top of the FIFO queue.
    `void` | `enqueueTask(T t)` Synchronized insert of a new task to the end of the FIFO queue.
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### MAX_SIZE

          public static final int MAX_SIZE

      See Also:
        Constant Field Values

    - #### NO_MORE_TASKS

          public static final Object NO_MORE_TASKS

  - ### Constructor Detail

    - #### LocalTaskQueue

          public LocalTaskQueue()

  - ### Method Detail

    - #### enqueueTask

          public void enqueueTask(T t)
                           throws InterruptedException

      Synchronized insert of a new task to the end of the FIFO queue.
      Parameters:
        `t` - task
      Throws:
        `InterruptedException` - if InterruptedException occurs

    - #### dequeueTask

          public T dequeueTask()
                        throws InterruptedException

      Synchronized read and delete from the top of the FIFO queue.
      Returns:
        task
      Throws:
        `InterruptedException` - if InterruptedException occurs

    - #### closeInput

          public void closeInput()

      Synchronized (logical) insert of a NO_MORE_TASKS symbol at the end of the FIFO queue in order to mark that no more tasks will be inserted into the queue.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

Copyright © 2020 The Apache Software Foundation. All rights reserved.