> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sdk-user-guide/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sdk-user-guide/_mcp/server.

# holoscan::PeriodicConditionPolicy

> Condition class to support periodic execution of operators.

[Condition](../classes/condition) class to support periodic execution of operators.

```cpp showLineNumbers={false}
enum class holoscan::PeriodicConditionPolicy
```

The recess (pause) period indicates the minimum amount of time that must elapse before the `compute()` method can be executed again. The period is specified as a string containing a number and an (optional) unit. If no unit is given the value is assumed to be in nanoseconds. Supported units are: ms, s, hz (case insensitive)

For example: "10000000", "10ms", "1s", "50Hz".

Using `std::string` as the first parameter of `make_condition<T>` is only available through [`Arg`](../classes/arg).

For example: [`Arg`](../classes/arg)`("recess_period") = "1s"` or [`Arg`](../classes/arg)`("recess_period", "1s")`.

The recess (pause) period can also be specified as an integer value (type `int64_t`) in nanoseconds or as a value of type `std::chrono::duration<Rep, Period>` (see [https://en.cppreference.com/w/cpp/chrono/duration](https://en.cppreference.com/w/cpp/chrono/duration)).

Example:

* `1000` (1000 nanoseconds == 1 microsecond)
* `5ns`, `10us`, `1ms`, `0.5s`, `1min`, `0.5h`, etc.
  requires #include \<chrono> and using namespace std::chrono\_literals;
  * requires `#include <chrono>` and `using namespace std::chrono_literals;`
* `std::chrono::milliseconds(10)`
* `std::chrono::duration<double, std::milli>(10)`
* `std::chrono::duration<double, std::ratio<1, 1000>>(10)`

This class wraps GXF SchedulingTerm(`nvidia::gxf::PeriodicSchedulingTerm`).

\==Parameters==

* **recess\_period** (std::string): The recess (pause) period value used by the condition. The period is specified as a string containing a number and an (optional) unit. If no unit is given the value is assumed to be in nanoseconds. Supported units are: ms, s, hz (case insensitive). Constructors are also provided that allow specifying this period using an integer value (type `int64_t`) in nanoseconds. Alternatively, a `std::chrono::duration` can be used (see example above).

---

## Values

| Name                    |
| ----------------------- |
| `kCatchUpMissedTicks`   |
| `kMinTimeBetweenTicks`  |
| `kNoCatchUpMissedTicks` |