Форум программистов, компьютерный форум CyberForum.ru

Sleep некорректно работает.. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ перегрузка (вызов второй функции) http://www.cyberforum.ru/cpp-beginners/thread301154.html
Добрый день!!! не могли бы помочь доработать программу на с++? необходимо осуществить вызов второй функции...ребята, девчата, подскажите, как сделать!!! Заранее спасибо!! Вот сам код. #include "iostream" #include "cmath" using namespace std; float F(float x) { if ((abs(x))<=0.1) return (pow(x,3)-0.1); else
C++ Открыть файл Подскажите , как открыть файл с помощью функций fopen , заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread301139.html
Стек, дек, приоритетные очереди. C++
Разработать программу работы с деком. Дек организовать на массиве с циклическим заполнением и со сдвигом. Операции выполняются с обоих концов. чего она не работает? если кто может переделать ее в вижуал пожалуйста! #include<iostream.h> #include<iomanip.h> #include<conio.h> #include<stdlib.h> #define n 10
C++ С++ не понимать)
Робот может перемещаться в четырёх направлениях ("С" - север, "З" - запад, "Ю" - юг, "В" восток) и принимать 3 цыфровые команды: 0 - продолжать движение, 1 - поворот налево, -1 - поворот направо. Дан символ С - исходное направление робота и число N - посланная ему команда. Вывести направление робота после выполнения полученной команды.
C++ Экспоненциальное распределение. http://www.cyberforum.ru/cpp-beginners/thread301110.html
У меня в задаче дано что в среднем приходит 10 заявок в месяц.Я написал функцию для генерации интервалов между заявками но почему то если использовать чистую функцию то в месяц могут выйти 20 и более заявок или наоборот 2, 3.Может быть я неверно составил функцию. double RND() { return (random(RAND_MAX)/(double)RAND_MAX); // генерируется случайное число от 0 до 1 } double ExpDis(int...
C++ факториал в с++ Дано целое число N (>0). Вывести сумму 2 + 1/(2!) +1/(3!)+ ... + 1/(N!) Полученное число является приближеным значением константы е=ехр(1)(=2.71828183). подробнее

Показать сообщение отдельно
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
21.05.2011, 15:40     Sleep некорректно работает..
решил затестить функцию слип созданием измерителя FPS

вот поток - который оповещает о том что прошла секунда, изменением переменной sec на 1 каждую секунду.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool sec=0;
CRITICAL_SECTION crs_fps_sec; 
USHORT fps=0;
 
DWORD WINAPI FpsSecondCounter(LPVOID param)
{
while(1)
{
EnterCriticalSection(&crs_fps_sec);
 
sec=1;
 
LeaveCriticalSection(&crs_fps_sec);
 
Sleep(1000); //ждем секунду и меняем триггер на 1
}
return 0;
};
вот функция в которой происходит и измерение FPS, после прорисовки.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
USHORT frames=0;
 
static inline void CountFps()
{
++frames; //считаем кадры
EnterCriticalSection(&crs_fps_sec);
 
        if(sec) //если секунда прошла
        {
        sec=0; //обнуляем триггер
        fps=frames; 
        frames=0; //обнуляем кадры
        }
 
LeaveCriticalSection(&crs_fps_sec);
 
}
FPS >1000 из этого следует что прорисовка выполняется более 1000 раз в секунду(все нормально)

но стоит поставить после LeaveCriticalSection(во второй функции) Sleep(1); FPS становится равно каким то 60 кадрам в секунду, а не постоянной тысяче(даже если прорисовка длится около 0.9 мс то FPS должно быть равно хотя бы 500),

почему так происходит, и можно как ни будь заменить слип более точной задержкой в одну милисекунду?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru