Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2011, 14:53   #1
Dem_v
 
Регистрация: 20.12.2009
Сообщений: 3
По умолчанию Нужен таймер в микросекундах. Заранее всем спасибо за совет!

По Sleep() можно приостановит выполнение программы на несколько миллисекунд, а надо микросекунд. В общем нужен таймер в микросекундах. Заранее всем спасибо за совет!
Dem_v вне форума Ответить с цитированием
Старый 20.08.2011, 15:26   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Говорить о микросекундах в Виндовс смешно. Это не ОС реального времени. Тут любой процесс в любой момент может грузануть проц на сколько угодно времени, так что дай бог миллисекунды с точностью до 10 сосчитать. Точнее, сосчитать можно хоть пикосекунды, но гарантировать, что вас процесс заснёт ровно на 123 микросекунды, а на 124-той проснётся, просто нереально.

Есть подозрение, что эти микросекунды вам даром не нужны, если, конечно, вы не драйвер для железяки какой-то разрабатываете.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.10.2012, 16:45   #3
Lem0nti
Пользователь
 
Регистрация: 31.08.2011
Сообщений: 14
По умолчанию

Тоже столкнулся с необходимостью паузы меньше чем на миллисекунду. Нет ли, случайно, у кого-нибудь решения?
Lem0nti вне форума Ответить с цитированием
Старый 02.10.2012, 18:08   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

А зачем?
Самый точный таймер - это мультимедийный таймер.
Ещё можно что-то придумать с GetTickCount, но если ваша система работает дольше 52 часов, то этот вариант даже не рассматривайте.

Винда вам на Ring3 ,уж точно, в этом не помощник.
Пишите драйвер ядра(ring 0), и оттуда мутите что вам надо.
Либо пишите аппаратный драйвер. А ещё я бы поискал спецификации API драйверов для процессоров. Мб там что-то и будет.

Ещё подскажу: копайте Open Source проекты операционных систем.
Человек_Борща вне форума Ответить с цитированием
Старый 02.10.2012, 18:21   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

да ладно, старый добрый DOS с привязкой на IRQ0 и вся любовь) реально срабатывание с задержкой менее 10 микросекунд ещё на Pentium 1 получалось... и это на неоптимизированном коде...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 02.10.2012, 18:31   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Круто, все ставим дос!!111адынъ
От доса до железа не так уж и далеко.. Не то, что сейчас.
Человек_Борща вне форума Ответить с цитированием
Старый 02.10.2012, 18:48   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
От доса до железа не так уж и далеко..
Зато нет проблем с задачами реального времени))) Да и возможности железа, при наличии ровных рук, использовались намного шире...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 02.10.2012, 19:05   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

ага, и система это один большой поток... никаких тебе multi/hyper-threading...
Счастье млин..
Человек_Борща вне форума Ответить с цитированием
Старый 02.10.2012, 19:14   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

http://programmersforum.ru/showpost....01&postcount=2
http://forums.inscriber.com/viewtopic.php?t=288 (RTX for Delphi)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.10.2012, 21:34   #10
Lem0nti
Пользователь
 
Регистрация: 31.08.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А зачем?
Самый точный таймер - это мультимедийный таймер.
Ещё можно что-то придумать с GetTickCount, но если ваша система работает дольше 52 часов, то этот вариант даже не рассматривайте.

Винда вам на Ring3 ,уж точно, в этом не помощник.
Пишите драйвер ядра(ring 0), и оттуда мутите что вам надо.
Либо пишите аппаратный драйвер. А ещё я бы поискал спецификации API драйверов для процессоров. Мб там что-то и будет.

Ещё подскажу: копайте Open Source проекты операционных систем.
Мне не нужен самый точный таймер. Мне нужны паузы меньше миллисекунды. А зачем - вариантов, я уверен, может быть немеряно.
В моём случае - программа для нагрузочного тестирования. При паузе в 1 миллисекунду я имею 1000 энных итераций, а без неё - 80000. Для того, чтобы найти границу устойчивости софта, мне приходится извращаться с разветвлёнными ифами и вставлять паузы в одну миллисекунду через раз, через два и т.д. Но это хрень. В общем, надо, если знаете как, подскажите, пожалуйста.

2 raxp
Спасибо за ссылки, обязательно ознакомлюсь.
Lem0nti вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перезагрузка операцый с++ заранее спасибо Obi_Van Помощь студентам 0 28.05.2011 21:56
Переробить процедуру, спасибо заранее!!!! mix_vasja Паскаль, Turbo Pascal, PascalABC.NET 0 11.03.2011 19:52
Привет всем!Помогите пожалуйста с сортировкой файла в Delphi, заранее спасибо Taisja Помощь студентам 2 01.06.2008 15:42
Пожайлуйста помогите решить задачки...Заранее спасибо!И удачи всем! vdv08 Паскаль, Turbo Pascal, PascalABC.NET 9 06.04.2008 21:01