Se per "sincrono" intendi "sequenziale", una soluzione è strutturare il codice come una o più macchine a stati finiti.