![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Всем привет. На носу диплом.. в процессе разработки зашла в тупик. у меня есть функция для определения тактовой частоты процессора. Нужно с помощью нее получать конкретные временные зедержки (привязку нужно сделать через системный таймер). Не могу придумать как это реализовать. Частота получается с помощью RdtSC(если нужно взглянуть на функцию, могу выложить исходник). Очень надеюсь на вашу помощь..
|
#2
|
|||
|
|||
![]() А нужно делать именно так?
А может сделать протой поток с приоритетом, где в цикле крутить sleep(n) и поднятие соотв. события/выброс сообщения? Точность будет вполне приемлемая для обычных задач (не realtime) |
#3
|
|||
|
|||
![]() нужно именно так. чтобы создать аппаратнонезависимый способ точных замеров. не я придумала тему диплома)
|
#4
|
|||
|
|||
![]() Чтобы делать временные задержки через системный таймер, скорее всего частоту процессора знать не надо, т.к. обращение к системному таймеру это вызов процедуры операционной системы, а ОС навряд ли будет требовать от вас привязку к железу.
|
#5
|
|||
|
|||
![]() Просьба немного изменилась.
Вот код. Его надо адаптировать под делфи, а выделенную части надо переделать на получение не просто тика, а на зависимость от частоты процессора (т,е. t = 1/f, f - количество тиков в секунду, частоту получить через rdtsc). Особенность моего задания именно в том, что мне нужно получать временные задержки основываясь именно на частоте процессора. Чем больше частота, тем выше точность задржки. Вот в чем суть! Надесь, что сейчас вопрос более понятен. Код:
|
#6
|
|||||
|
|||||
![]() Цитата:
Ну, собственно, весь интересный код лежит в функции ExactTimer exactTimer, остальное - шелуха вокруг. Собственно, как я понимаю, эта функция запускается как отдельный поток. Фактически,она и выполняет расчет времени ожидания в зависимости от частоты проца. Т.е. тело потока будет выглядеть как-то так: Код:
|
#7
|
|||
|
|||
![]() Спасибо! но вопросы еще будут...
![]() |