\chapter{Conclusion}\label{conclusion}

\Gls{uthrding} is popular.
It makes sense for \CFA to use it.

\todo{Obivously fix the above}

An important aspect of this approach to threading is how threads are scheduled.
As \CFA aims to increase productivity and safety of C while maintaining its performance, so to should the threading runtime achieve these goals.
For scheduling, productivity and safety manifest in removing pitfalls in the efficient usage of the threading runtime.
This thesis contributes to this goal by presenting a low-latency scheduler that offers improved starvation prevention compared to other state-of-the-art schedulers.
It presents a core algorithm (Chapter~\ref{core}) that provides increased fairness through helping (Section~\ref{heling}) as well as optimizations which virtually remove the cost of this fairness (Section~\ref{relaxedtimes}).
Building upon the fundamental scheduling algorithm, an implementation of user-level \io blocking is presented (Chapter~\ref{io}) which achieves the same performance and fairness balance as the scheduler itself.
From these core algorithms, and a low-latency idle-sleep mechanism is presented (Chapter~\ref{practice}) which allows the \CFA runtime to stay viable for workloads that do not consistently saturate the system.

\section{Future Work}
While the \CFA runtime achieves a better compromise in term of performance and fairness than other schedulers, I do believe that further improvements could be made to reduce even further the number of cases where performance deteriorates.
Furthermore, I believe that achieve performance and starvation freedom simultaneously is generally a challenge even outside of scheduling algorithms.

\subsection{Idle Sleep}
An interesting

\subsection{Hardware}