Najlepiej stworzyć dwa wątki, z których każdy będzie wykonywał funkcje z realizacjami algorytmów. Wykorzystując win32 możesz na przykład skorzystać z CreateThread, natomiast pod linuxem z funkcji fork.
Jeżeli później ma nastąpić synchronizacja wątków, to będziesz musiał sprawdzić stan wykonania wątków. Można to zrobić na przykład zrobić korzystając z funkcji
BOOL WINAPI GetExitCodeThread(
__in HANDLE hThread, //uchwyt do watka utworzonego przy pomocy CreateThread
__out LPDWORD lpExitCode //zmienna do której zostanie zwrócony status wykonania watka
);
jeśli pod zmienną lpExitCode zostanie zwrócony status: STILL_ACTIVE, to znaczy że wątek jeszcze sie nie zakończył.
Czyli sprawdzanie może odbywać się na przykład w pętli wiecznej z której wyjście nastąpi wtedy gdy oba wątki sie zakonczą.
Istnieje jeszcze coś takiego jak OpenMP - to jest wręcz stworzone do programowania aplikacji równoległych (najlepiej sprawdza się na maszynach wieloprocesorowych)