我有两个Qtimers。 T1从100ms开始。 T2从2ms开始。
我放了一些var来控制他们的时间。 为什么他们没有及时? 有时T2达到55,或54,或53,但从未达到确切的条件? 我需要在每次T1超时时,T2已经完成50次超时!
感谢。
有人可以建议我使用其他同步方法吗?
答案 0 :(得分:3)
您不能依赖定时器进行线程同步,因为CPU时序永远不会精确。其他应用程序在您的操作系统后台运行并调整时间,因此您不能依赖它。
您必须使用其他同步方法,例如监视器,信号量等。
答案 1 :(得分:2)
您的计时器永远不会给您正确的间隔,因为依赖于您的操作系统线程,进程调度程序。因此,为了计算有效的经过时间,您应该在计时器滴答方法中获得系统时间,并计算当前时间和计时器开始时间之间的差值。对于同步,在线程同步的情况下需要使用互斥锁或信号量。