Как создать задержку - PullRequest
0 голосов
/ 24 марта 2011

Мне нужно создать таймер задержки, не используя Sleep() из windows.h, так как он приостановит текущий и дочерний потоки. Поэтому мне нужен простой таймер задержки для применения в моей программе.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 24 марта 2011

Опрос - плохая идея, поскольку он означает занятый цикл. Обычный способ сделать это в Windows - с помощью таймера. См. SetTimer().

3 голосов
/ 24 марта 2011

Sleep не влияет на другие темы. Если вы обнаружите, что все ваши потоки остановлены, когда вы вызываете Sleep, это означает, что у спящего потока есть ресурс, который они все ждут. Узнайте, что это за ресурс, иначе ваша программа не сможет работать как запланировано.

1 голос
/ 24 марта 2011

Вы можете просто сделать цикл и опрашивать системный таймер несколько раз.Однако это приводит к полной загрузке ЦП - обычно используется задержка Sleep (прямо или косвенно).

Кроме того, вы можете создать событие и вызвать WaitForSingleObject с желаемой задержкой.Но это безумие, Sleep действительно делает то же самое, но лучше.

0 голосов
/ 25 марта 2011

Вам нужно использовать какой-то цикл и считать секунды, в то же время вы также должны поддерживать прокачку сообщений. Это сделает вашу программу отзывчивой.

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

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