F
fabioscime
Hi, I'm writing a background timer using /cc++/thread.h.
this is my source code:
timer.h
-----------------------------------------------
#ifndef TIMER_H
#define TIMER_H
#include <cc++/thread.h>
using namespace std;
using namespace ost;
class Timer : public Thread
{
private:
int timeout;
public:
Timer();
~Timer();
void setTimer(float t);
void run();
};
#endif
timer.cpp
-------------------------------------
#include "timer.h"
#include <iostream>
Timer::Timer()
{
}
Timer::~Timer()
{
terminate();
}
void Timer::setTimer(float t)
{
timeout = (int)(t * 1000);
}
void Timer::run()
{
sleep(timeout);
exit();
}
I use my timer in this way:
Timer *t1 = new Timer();
float oldTimeout = 3;
t1->setTimer(oldTimeout);
t1->detach();
and then I want to restart it when expired:
oldTimeout = 2*oldTimeout;
t1->setTimer(oldTimeout);
int i = t1->detach();
but i == -1 (error) and timer does not start again.
what's wrong?
this is my source code:
timer.h
-----------------------------------------------
#ifndef TIMER_H
#define TIMER_H
#include <cc++/thread.h>
using namespace std;
using namespace ost;
class Timer : public Thread
{
private:
int timeout;
public:
Timer();
~Timer();
void setTimer(float t);
void run();
};
#endif
timer.cpp
-------------------------------------
#include "timer.h"
#include <iostream>
Timer::Timer()
{
}
Timer::~Timer()
{
terminate();
}
void Timer::setTimer(float t)
{
timeout = (int)(t * 1000);
}
void Timer::run()
{
sleep(timeout);
exit();
}
I use my timer in this way:
Timer *t1 = new Timer();
float oldTimeout = 3;
t1->setTimer(oldTimeout);
t1->detach();
and then I want to restart it when expired:
oldTimeout = 2*oldTimeout;
t1->setTimer(oldTimeout);
int i = t1->detach();
but i == -1 (error) and timer does not start again.
what's wrong?