Base module

Runner

[Runner]({#ref classicy_1_1Runner #}) is a virtual interface for implementing asynchronous objects such as threads and f

Runner

#include <icy/runner.h>

Subclassed by: Idler, Synchronizer, Thread, Timer

Runner is a virtual interface for implementing asynchronous objects such as threads and futures.

Public Methods

ReturnNameDescription
Runner
voidstartStarts the asynchronous context with the given callback. The callback must remain valid for the lifetime of the [Runner](#runner).
boolrunning constReturns true if the async context is currently running.
voidcancelSignals the async context to stop at the earliest opportunity.
boolcancelled constReturns true if the context has been cancelled. The implementation is responsible for exiting as soon as possible after cancellation.
boolrepeating constReturns true if the runner is in repeating mode.
voidsetRepeatingEnables or disables repeating mode. When repeating, the target function is invoked repeatedly until [cancel()](#cancel-2) is called. This normalizes behaviour across thread-based and event-loop-based [Runner](#runner) implementations. Must be called before [start()](#start-3).
boolasync constReturns true if the implementation is thread-based.
std::thread::idtid constReturns the native thread ID of the thread running the async context.
boolwaitForExitBlocks until the async context exits or the timeout elapses. The context should be cancelled before calling this method. Must be called from outside the runner's own thread to avoid deadlock.

Runner

Runner()

start

void start(std::function< void()> target)

Starts the asynchronous context with the given callback. The callback must remain valid for the lifetime of the [Runner](#runner).

Parameters

  • target Callable to invoke when the context runs.

running

const

bool running() const

Returns true if the async context is currently running.

Returns

True if the runner's context has been started and has not yet stopped.


cancel

void cancel()

Signals the async context to stop at the earliest opportunity.


cancelled

const

bool cancelled() const

Returns true if the context has been cancelled. The implementation is responsible for exiting as soon as possible after cancellation.

Returns

True if [cancel()](#cancel-2) has been called.


repeating

const

bool repeating() const

Returns true if the runner is in repeating mode.

Returns

True if the target function is invoked in a loop until cancelled.


setRepeating

void setRepeating(bool flag)

Enables or disables repeating mode. When repeating, the target function is invoked repeatedly until [cancel()](#cancel-2) is called. This normalizes behaviour across thread-based and event-loop-based [Runner](#runner) implementations. Must be called before [start()](#start-3).

Parameters

  • flag True to enable repeating mode, false to run the target once.

async

const

bool async() const

Returns true if the implementation is thread-based.

Returns

True for thread-backed runners, false for event-loop-driven runners.


tid

const

std::thread::id tid() const

Returns the native thread ID of the thread running the async context.

Returns

std::thread::id of the runner thread, or a default-constructed ID if not started.


waitForExit

bool waitForExit(int timeout)

Blocks until the async context exits or the timeout elapses. The context should be cancelled before calling this method. Must be called from outside the runner's own thread to avoid deadlock.

Parameters

  • timeout Maximum number of milliseconds to wait. Pass 0 to wait indefinitely.

Returns

True if the context exited cleanly, false if the timeout was reached (throws instead).

Protected Attributes

ReturnNameDescription
std::shared_ptr< Context >_contextShared pointer to the internal Context.

_context

std::shared_ptr< Context > _context

Shared pointer to the internal Context.

Protected Methods

ReturnNameDescription
RunnerNonCopyable and NonMovable.
RunnerDeleted constructor.

Runner

Runner(const Runner &) = delete

NonCopyable and NonMovable.


Runner

Runner(Runner &&) = delete

Deleted constructor.