QTimer неверное время - PullRequest
       2

QTimer неверное время

0 голосов
/ 18 декабря 2011

У меня два Qtimers. T1 начинается с 100 мс. T2 начинается с 2 мс.

Я положил несколько вар, чтобы контролировать их время. Почему они не успевают? Иногда T2 достигает 55, или 54, или 53, но никогда не в точном состоянии? Мне нужно, чтобы при каждом тайм-ауте T1 T2 делал 50 тайм-аутов!

Спасибо.

Может кто-нибудь подсказать, пожалуйста, другие способы синхронизации?

Ответы [ 2 ]

3 голосов
/ 18 декабря 2011

Вы не можете полагаться на таймеры для синхронизации потоков, потому что время процессора никогда не бывает точным.Другие приложения работают в фоновом режиме вашей операционной системы и изменяют время, поэтому вы не можете на него полагаться.

Вы должны использовать другие методы синхронизации, такие как мониторы, семафоры и т. Д.

2 голосов
/ 18 декабря 2011

Ваш таймер никогда не даст вам правильный интервал, потому что это зависит от потока вашей ОС, планировщика процессов. Таким образом, чтобы рассчитать действительное истекшее время, вы должны получить системное время в своем методе отсчета таймера и вычислить дельту между текущим временем и временем запуска таймера. Для синхронизации вам нужны мьютексы или семафоры в случае синхронизации потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...