# Variables take

An decision block that takes variable values given from other fibers. This block in combination with one or more Variables give blocks are used for communication between fibers in a concurrency safe way.

The fiber will always proceed immediately without pause through the YES path if variable values are available (enqueued). If the proceed option is set to Immediately and no variable values are available (the queue is empty) then the fiber will proceed immediately through the NO path without pause and changing the variables. If is set to When available and the queue is empty, then the fiber will pause until variables become available (given), proceeding through the YES path.

This block acts like a FIFO queue, taking in and queuing up variable values given from other fibers. Each visit to this block removes the oldest set of given values, if available, and assigns them to the variables in the current fiber. The queue has a capacity of at most 128 value sets, when full the giver fiber will fail.

## Options

- Proceed — when the fiber should proceed.

## Taken variables

The accepted variables, of which the values are taken from other fibers. Added or removed variables are mirrored in any Variables give blocks associated with this block.

## Output variables

- Giver fiber URI — variable to assign the URI of giving fiber, used for replying.