[MUC++] Patrice Roy - Slowing Down to be Faster - C++ and Divisible Algorithms in Real-Time Systems
Channel: MUCplusplus
Date: 2022-05-27

A Real-time system needs to respect a set of constraints; typically, such systems are defined as systems for which delivering the right results but not on time is as bad as not delivering the right results. Depending on the system, the impact of not respecting these constraints can go from unpleasantness or discomfort (so-called "soft" real-time) to actual physical harm ("hard" real-time).

Most real-time constraints fall in one of four categories: a task has to be [b]rief (execution has to complete within a fixed amount of time once started), [i]mmediate (low-latency: execution has to start within a fixed amount of time following some event), or iterate with [r]egularity (e.g.: task has to be executed n times per second) or [c]onstancy (e.g.: task has to be executed every 1/nth of a second).

In the case of [r] and [c]-type tasks, there tends to be some residual time between two consecutive executions of a task. That time can be spent sleeping, but it can also be invested towards performing non-real-time tasks which help the real-time system behave better as a whole.

In this talk, we will examine how one can leverage C++ to achieve the goal of making a real-time system behave better by changing the way non-real-time tasks are performed.