Skip to content

iox::concurrent::PeriodicTask🔗

This class periodically executes a callable specified by the template parameter. This can be a struct with a operator()() overload, a [cxx::function_ref]()<void()> or std::fuction<void()>. More...

#include <periodic_task.hpp>

Public Functions🔗

Name
template \<typename... Args>
PeriodicTask(const PeriodicTaskManualStart_t, const posix::ThreadName_t taskName, Args &&... args)
Creates a periodic task. The specified callable is stored but not executed. To run the task, void [start(const units::Duration interval)]() must be called.
template \<typename... Args>
PeriodicTask(const PeriodicTaskAutoStart_t, const units::Duration interval, const posix::ThreadName_t taskName, Args &&... args)
Creates a periodic task by spawning a thread. The specified callable is executed immediately on creation and then periodically after the interval duration.
~PeriodicTask()
Stops and joins the thread spawned by the constructor.
PeriodicTask(const PeriodicTask & )
PeriodicTask(PeriodicTask && )
PeriodicTask & operator=(const PeriodicTask & )
PeriodicTask & operator=(PeriodicTask && )
void start(const units::Duration interval)
Spawns a thread and immediately executes the callable specified with the constructor. The execution is repeated after the specified interval is passed.
void stop()
This stops the thread if it's running, otherwise does nothing. When this method returns, the thread is stopped.
bool isActive() const
This method check if a thread is spawned and running, potentially executing a task.

Detailed Description🔗

template <typename T >
class iox::concurrent::PeriodicTask;

This class periodically executes a callable specified by the template parameter. This can be a struct with a operator()() overload, a [cxx::function_ref]()<void()> or std::fuction<void()>.

Template Parameters:

  • T is a callable type without function parameters

Note: Currently execution time of the callable is added to the interval.

#include <iceoryx_utils/internal/concurrent/periodic_task.hpp>
#include <iceoryx_utils/internal/units/duration.hpp>
#include <iostream>

int main()
{
    using namespace iox::units::duration_literals;
    PeriodicTask<iox::cxx::function_ref<void()>> task{
        PeriodicTaskAutoStart, 1_s, "MyTask", [] { std::cout << "Hello World" << std::endl; }};

        return 0;
}

Public Functions Documentation🔗

function PeriodicTask🔗

template <typename... Args>
inline PeriodicTask(
    const PeriodicTaskManualStart_t,
    const posix::ThreadName_t taskName,
    Args &&... args
)

Creates a periodic task. The specified callable is stored but not executed. To run the task, void [start(const units::Duration interval)]() must be called.

Parameters:

  • PeriodicTaskManualStart_t indicates that this ctor doesn't start the task; just pass PeriodicTaskManualStart as argument
  • taskName will be set as thread name
  • args are forwarded to the underlying callable object

Template Parameters:

  • Args are variadic template parameter for which are forwarded to the underlying callable object

function PeriodicTask🔗

template <typename... Args>
inline PeriodicTask(
    const PeriodicTaskAutoStart_t,
    const units::Duration interval,
    const posix::ThreadName_t taskName,
    Args &&... args
)

Creates a periodic task by spawning a thread. The specified callable is executed immediately on creation and then periodically after the interval duration.

Parameters:

  • PeriodicTaskAutoStart_t indicates that this ctor starts the task; just pass PeriodicTaskAutoStart as argument
  • interval is the time the thread waits between two invocations of the callable
  • taskName will be set as thread name
  • args are forwarded to the underlying callable object

Template Parameters:

  • Args are variadic template parameter for which are forwarded to the underlying callable object

function ~PeriodicTask🔗

inline ~PeriodicTask()

Stops and joins the thread spawned by the constructor.

Note: This is blocking and the blocking time depends on the callable.

function PeriodicTask🔗

PeriodicTask(
    const PeriodicTask & 
)

function PeriodicTask🔗

PeriodicTask(
    PeriodicTask && 
)

function operator=🔗

PeriodicTask & operator=(
    const PeriodicTask & 
)

function operator=🔗

PeriodicTask & operator=(
    PeriodicTask && 
)

function start🔗

inline void start(
    const units::Duration interval
)

Spawns a thread and immediately executes the callable specified with the constructor. The execution is repeated after the specified interval is passed.

Parameters:

  • interval is the time the thread waits between two invocations of the callable

Attention: If the PeriodicTask instance has already a running thread, this will be stopped and started again with the new interval. This might take some time if a slow task is executing during this call.

function stop🔗

inline void stop()

This stops the thread if it's running, otherwise does nothing. When this method returns, the thread is stopped.

Attention: This might take some time if a slow task is executing during this call.

function isActive🔗

inline bool isActive() const

This method check if a thread is spawned and running, potentially executing a task.

Return: true if the thread is running, false otherwise.


Updated on 26 April 2021 at 15:31:01 CEST