Witam. Tak jak w temacie. Co myśliecie o tym stoperze? Ma on być uruchomiony jako wątek (na razie jest zwykłą klasą). Co myślicie o dokładności tego stopera? przecieŻ po wykonaniu usleep jest wykonywane dość dużo operacji więc może on chodzić trochę wolno. Jest może funkcja która wywoływała by inną zawsze co np 0.01 sek?
#include <iostream>
#include <cstdio>
#include <unistd.h>
class timer
{
private:
int msec,sec,min;
bool st;
public:
timer()
{
msec=0;sec=0;min=0;
wyswietl(min,sec,msec);
st=false;
}
void start()
{
st=true;
run();
}
void stop()
{
st=false;
}
void run()
{
while(st)
{
usleep(10000);
msec++;
if(msec>99)
{
sec++;
msec=0;
}
if(sec>59)
{
min++;
sec=0;
}
wyswietl(min,sec,msec);
}
}
void wyswietl(int min,int sec,int msec)
{
if(min==0)
std::cout<<"00";
else
std::cout<<min;
std::cout<<":";
if(sec==0)
std::cout<<"00";
else if(sec>0&&sec<10)
std::cout<<"0"<<sec;
else
std::cout<<sec;
std::cout<<":";
if(msec==0)
std::cout<<"00";
else if(msec>0&&msec<10)
std::cout<<"0"<<msec;
else
std::cout<<msec;
std::cout<<std::endl;
}
};
int main ()
{
timer t;
t.start();
return 0;
}