Skip to content

Search these docs, or ask Revo a question — answers link the pages they came from.

Sharing devices between threads


When several threads run at once, they compete for the same devices. The scheduler claims a location before a thread uses it, and three controls change what gets claimed and when.

Waiting claims are checked in priority order, highest number first. Claims with the same priority are checked in the order they were made. Each claim is all or nothing: a claim that cannot get everything it needs keeps waiting while the next one is checked, so a lower-priority claim whose locations are free can go ahead of a higher-priority one that is blocked. Waiting claims are checked again whenever a location is released.

The priority comes from the step making the claim: a Transfer uses its Transfer Priority, and a Composite Operation uses its own Priority.

A Composite Operation groups steps so they run without needing to wait for claims part way through. Before its first step starts, it claims every resource its steps use, all at once, such as the source and destination location of every Transfer step inside it. While it waits for them all to be free, it holds none of them.

  • Claim Transfer Devices (on by default) also claims the robots that carry out transfers. Turn it off to let other threads use the robot between this group’s transfers.
  • Priority applies to this up-front claim. The transfers inside it keep their own Transfer Priority.

Use a Composite Operation when a plate must move through several devices with no delay for claims between them, for example a temperature-sensitive plate.

Each device location has a Claim Parent Location setting. With it on, claiming that location also claims the whole device for the thread, until all that thread’s labware has left the device. With it off, only the location is claimed, so other threads can use the device’s other locations at the same time.

A Mutex Sequence lets only one thread inside it at a time. It does not claim devices. Use it to protect a block of steps that must not overlap between threads, for example work on a liquid handler deck, or reading and writing the same file.

For a worked example, see queuing several plates on a Hamilton Vantage.