One of the key challenges in developing applications for multicore systems is dealing with the nondeterministic behavior of applications. This makes parallel programming hard and programmers should spend substantial amounts of time to debug their application. To remove the nondeterministic behavior of applications, we could make the behavior of applications deterministic through the control of thread's execution order based on their progress. To guarantee the deterministic behavior of a thread, the measured progress of a thread should be repeatable and cycle-accurate. If the progress does not meet these requirements, it is impossible to guarantee the deterministic behavior of threads. In this paper, we propose a novel method to measure a cycle-accurate deterministic progress of a thread and a technique to guarantee the deterministic behavior of applications with the proposed method. As a case study, we implement 24 video decoders on a quad core system using the proposed technique and evaluate our technique on SPLASH-2 benchmark. The experimental result yields a geometric mean of overhead of about 7.2% on SPLASH-2 benchmark.