Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, unistd.h] usleep() - błąd linkera podczas próby wywołania

Ostatnio zmodyfikowano 2010-06-21 18:05
Autor Wiadomość
robaczek122
Temat założony przez niniejszego użytkownika
[C++, unistd.h] usleep() - błąd linkera podczas próby wywołania
» 2010-06-05 20:55:59
Przetestowałem funkcję Sleep() i _sleep() na jakimś timerze (zarówno online jak i innym offline), pomiar 1 sekundy pomiędzy dwoma spacjami idealny, natomiast pomiędzy dwoma kliknięciami myszki spory (+-0,02).
Wyczytałem, że istnieje funkcja usleep(), w bibliotece <unistd.h>, ale gdy chce jej użyć wyskakuje mi błąd, że funkcja usleep nie została wcześniej zdeklarowana.
I tutaj mam dwa pytania:
Da się obniżyć jakoś ten błąd przy kliknięciach?
Co może być nie tak z funkcją usleep?
P-17636
malan
» 2010-06-06 10:25:57
Czy ta funkcja nie jest czasem dostępna tylko na Linuxie ?
P-17658
DejaVu
» 2010-06-07 03:15:01
Pogooglaj na temat: high resolution timer.
P-17730
robaczek122
Temat założony przez niniejszego użytkownika
» 2010-06-17 16:44:18
dzięki za odpowiedź

Mam jednak mały problem z takim przypadkiem:
C/C++
#include<iostream>
#include<conio.h>
#include <windows.h>
using namespace std;

int main()
{
    LARGE_INTEGER czestotliwosc;
    LARGE_INTEGER t1, t2;
    double czas;
   
   
   
    QueryPerformanceFrequency( & czestotliwosc );
    QueryPerformanceCounter( & t1 ); //start
   
    while(( t2.QuadPart - t1.QuadPart ) * 1000.0 / czestotliwosc.QuadPart <= 3000 ) //stop po 3 sekundach
    {
        QueryPerformanceCounter( & t2 );
    }
   
    // cout<<"jesli to jest tutaj to program nie dziala"<<endl;
   
    czas =( t2.QuadPart - t1.QuadPart ) * 1000.0 / czestotliwosc.QuadPart;
    cout << czas << " ms";
   
   
    getch();
    return( 0 );
}

a mianowicie kod działa dobrze (odlicza 3 sekundy), ale nie wiem dlaczego jeśli mam coś pomiędzy pętla a linijką

czas =( t2.QuadPart - t1.QuadPart ) * 1000.0 / czestotliwosc.QuadPart;
 to program nie odmierza czasu, tylko od razu przechodzi dalej.
P-18091
ison
» 2010-06-17 17:01:04
nie łatwiej tak odmierzyć 3 sekundy?
C/C++
#include <cstdio>
#include <windows.h>

int main()
{
    printf( "Start\n" );
    int timeA, timeB;
    timeA = GetTickCount();
    while( timeB - timeA < 3000 ) timeB = GetTickCount();
   
    printf( "Stop\n" );
}
P-18093
robaczek122
Temat założony przez niniejszego użytkownika
» 2010-06-20 14:56:11
Działa, tylko, że nie tak dokładniej jak bym chciał.
Chciałbym mimo wszystko dokształcić się i dowiedzieć dlaczego jak dam tam tego "cout", to program nie odmierza czasu?
P-18178
DejaVu
» 2010-06-20 16:14:25
Oboje źle piszecie algorytm. Przykład:
C/C++
int i = 123;
int k; //ta wartość również powinna być czymś zainicjalizowana, np. k = i;
while( k - i < 3000 ) k = funkcja();

P-18184
robaczek122
Temat założony przez niniejszego użytkownika
» 2010-06-21 18:05:22
dzięki wszystkim!
Już wiem czemu to nie grało.
Temat do zamknięcia.
P-18217
« 1 »
  Strona 1 z 1