четверг, 9 декабря 2010 г.

Таймеры в Linux

Есть несколько простых вариантов как работать с таймерами в Linux из c++.
Самый простой способ - это int alarm(unsigned int секунд), который выдаст SIGALARM по истечение времени.
Есть другое средство - settimer() и gettimer(). В результате получаем тот же SIGALARM, но при этом есть возможность выдавать его циклически(т.е. через заданные равные промежутки времени). Подробнее см. man
Надо учесть, что alarm использует тот же таймер(или 1 из них, не знаю точно) и могут возникнуть конфликты. Также надо учесть, что sleep прерывается сигналами, SIGALARM'ом в том числе.

пятница, 3 декабря 2010 г.

Undefined reference to... и шаблоны в c++

Шаблон задает не саму функцию, а только... шаблон о том, как ее создать при необходимости. Соответственно самой функции как таковой не создается. И если реализацию вынести в другой файл(например объявление в .h, а реализация в .cc) то появится ошибка Undefined reference to... связанная с этим шаблоном. Можно либо перенести объявление и реализацию в  1 файл(ну, или вообще совместить), или  использовать export, хотя в интернетах это почему-то не рекомендуют.
С шаблонами классов все аналогично.

Начало

Здесь я собираюсь записывать решенные задачи, мои достижения, интересные факты и все остальное, что мне захочется записать. Если вдруг кому-то это поможет или понравится, я буду только рад. Ну что ж, начнем пожалуй...