LINUX.ORG.RU

Сообщения fmvin

 

Проблема с gdb, когда использую posix timers.

Здравствуйте все. Подскажите, как решить мою проблему. Я разрабатываю многопоточную программу, которая должна жестко блюсти POSIX вызовы. Я писал и отлаживался в gdb и все было хорошо до тех пор пока я не стал использовать таймеры. Механизм я избрал стандартный, таймер срабатывает и посылает сигналы USER1, USER2 обработчику, а там уже что-либо делаю. Но после имлементации таймеров gdb перестал работать нормально(вообще перестал). То есть я теперь не могу отлаживаться в gdb, gdb все время "вылетает" или "прерывается". Так вот у меня вопрос, почему gdb не работает нормально с таймерами и можно ли это побороть? В интернете я не смог найти удовлетворительный ответ.

Заранее спасибо.

fmvin
()

timer_settime-проблема с переодическим таймером.

Здравствуйте, У меня возникла следующая проблема. Созданные переодические таймеры не работают.

{ event.sigev_notify = SIGEV_SIGNAL; event.sigev_signo = SIGUSR1; timer_create(clock_id, &event, &tid); time.it_value.tv_sec = 0; itime.it_value.tv_nsec = 500000000; itime.it_interval.tv_sec = 0; itime.it_interval.tv_nsec = 500000000; timer_settime(tid, 0, &itime, NULL)

} То есть создаю таймер с переодичностью 0.5 сек. И использую следующий обработчик: void signal_handler(int signo, siginfo_t* info, void* other) { if (signo != SIGUSR1) return; switch(info->si_code) { case SI_TIMER: /*Например вывожу что-то на экран printf*/ return; } }

Проблема в следующем: таймера с переодичностью меньше 2 секунд(значения поля it_interval) не вызывают обработчик, следовательно я не получаю нотификацию что таймер сработал.

fmvin
()

Suspend, resume threads using posix calls only

Hello All, Задача следующая - есть поток, код которого нельзя менять(то есть добавлять или удалять строки в исходный код), необходимо реализовать операцию suspend and resume для данного потока используя только стандартные вызовы описанные в POSIX 1.x

Буду рад услышать Ваши идеи. Заранее благодарен.

fmvin
()

RSS подписка на новые темы