Manual interleaving of imperative code can be automated to certain extents.
Solutions often require an \gls{RTOS}, have a high memory requirement, do not support local variables, no thread-safe shared memory, no composition or no events as described in \cref{tbl:multithreadingcompare}.
This table extends a comparison table with various solutions to multitasking to \gls{MTASK} in the relevant categories.
-\todo[inline]{Uitleg over de talen geven}
+%\todo[inline]{Uitleg over de talen geven}
\begin{table}
\begin{threeparttable}
Due to the compilation to \gls{C} it is possible to run emfrp programs on tiny computers.
However, in contrast to in \gls{MTASK}, the tasks are not interpreted and there is no automated communication with a server.
-Other examples are CFRP \citep{suzuki_cfrp_2017}, XFRP \citep{10.1145/3281366.3281370}, Juniper \citep{helbling_juniper:_2016}, Hailstorm \citep{sarkar_hailstorm_2020}, Haski \citep{valliappan_towards_2020}, arduino-copilot \citep{hess_arduino-copilot_2020}.
+Other examples are CFRP \citep{suzuki_cfrp_2017}, XFRP \citep{shibanai_distributed_2018}, Juniper \citep{helbling_juniper:_2016}, Hailstorm \citep{sarkar_hailstorm_2020}, Haski \citep{valliappan_towards_2020}, arduino-copilot \citep{hess_arduino-copilot_2020}.
\subsection{Task-oriented programming}\label{sec:related_top}
\Gls{TOP} as a paradigm has proven to be effective for implementing distributed, multi-user applications in many domains.