Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Таймер, потоки и пр.
DF2 :: ФОРУМЫ > Основные форумы > Софт и железо > Программирование / Coding
ChASnock
Суть проста: требуется обеспечить задержку в программе, менее или более точно равную заданному количеству микросекундам..
Flashback
sleep не катит?
ChASnock
Он же на ms
Etoprostoya
Может тебе ещё задержку в пикосекундах?
Flashback
Цитата(ChASnock @ 27 Mar 2011, 21:26) *
Он же на ms

да. я подумал, что ты немного перепутал. а какой смысл в столь кортких задержках? но если ты микросекундный маньяк, то юзай юзай связку rdtsc и, например, слипа. при помощи rdtsc замеряешь кол-во выполненных тактов процессора за 1 секунду. потом делишь это дело на миллион, а дальше, думаю, ты понел.
ChASnock
Есть поток, в котором постоянно вызывается rdtsc и проверяется условие, не достиг ли счетчик определенного значения.
Имеет ли смысл каждый раз после такого сравнения вызывать Sleep(0)? Как еще можно сделать, чтобы поток не отжирал много процессорного времени?
ChASnock
Ок, потестил, увидел, что Sleep(0) может занимать до 1m циклов времени, в то время как Sleep(1000) около 1g. Неудачная идея.
(зачем только спрашивал)
ChASnock
Нашел решение: функция SwitchToThread(). Я сначала подумал, что она какое-то значение принимает (а она возвращает, лол).
Bourn
решение еще проще, функция clock

Код
clock_t T=clock();
while((clock()-T)<10000);//ждем 10 миллисекунд


конечно время вызова функции сколько то занимает, поэтому точно в любом случае не подождешь, но зато есть куда рыть wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.