Таймер поточнее.
От: Vis Украина  
Дата: 01.11.10 20:29
Оценка:
Покртитикуйте следующее решение.

Нужен точный таймер, чтобы срабатывал раз в 5мс, допустим с точностьб +- 0,1мс.

Не придумал лучшего, чем сзздать дополнительный тред и из него Sleep-ом отмерять прмежутов времени и дёргать Invoke-ом событие.

Чреват ли этот способ какими-то скрытыми граблями?
Re: Таймер поточнее.
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 01.11.10 20:55
Оценка: 5 (1) +1
Здравствуйте, Vis, Вы писали:

Vis>Покртитикуйте следующее решение.


Vis>Нужен точный таймер, чтобы срабатывал раз в 5мс, допустим с точностьб +- 0,1мс.


Vis>Не придумал лучшего, чем сзздать дополнительный тред и из него Sleep-ом отмерять прмежутов времени и дёргать Invoke-ом событие.


Vis>Чреват ли этот способ какими-то скрытыми граблями?


Ну грабли тут одни и большие — виндовс не являются ОС реального времени и никто гарантировать приход события вовремя не может. Под точканет ситуация еще более осложняется наличием сборщика мусора. Такой точный таймер ИМХО недостижим под виндовс.

Если делать все-таки будете, то лучше использовать не Invoke — а какой либо другой способ межпотоковой синхронизации, например AutoResetEvent или что-то типа того. Invoke работает через посылку сообщения через виндовую очередь, что точно добавит дополнительную задержку.

Помнится под голым winapi самую большую точность обеспечивали мультимедийные таймеры -см timeSetEvent
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.