Controller uses the asio io_context and thus uses one thread less. This also fixes a lot of thread sanitizer issues.