LINUX.ORG.RU

c++ обвязка вокруг таймеров


0

0

хочу сделать такой класс

class Timer
{
public:
Timer();
virtual ~Timer();
virtual void TimerTimeout() = 0;
void TimerSetTimeout();
void TimerStop();
void TimerStart();
};

то есть наследуешся от него, перегружаешь метод TimerTimeout, задаешь дискрет и допустим каждые 20 миллисекунд тебе этот метод вызывают

думал использовать timer_create... но вроде как он 1 на процесс и придется внутри этого таймера свои субтаймеры наворачивать или я неправ ?

таймеров мне нужно несколько, они будут в разных потоках со своими дискретами


как это лучше реализовать ?


Ответ на: комментарий от ott

как вариант.
а полегче ничего нет ? а то весь буст из-за таймеров тянуть не хочется.

UnKier
() автор топика

В TimerStart() родить поток в котором select стоит с нужным таймаутом. После select дернуть TimerTimeout().

HongZa
()
Ответ на: комментарий от HongZa

это вообще жутко :)
а почему не тупо sleep ? или select как то точнее работает ?

надо зарыться в буст посмотреть как там работает.

UnKier
() автор топика
Ответ на: комментарий от UnKier

sleep перывается любым доставленным сигналом. select - в зависимости от SA_RESTART.

Выглядит жутко? Возможно. Зависит от того что надо. В моей системе было досточно и притензий к работе такой реализациии не было. Но мне точности в десятки милисекунд было достаточно.

HongZa
()
Ответ на: комментарий от HongZa

мне точность нужна +-1 милисекунда.

UnKier
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.