История изменений
Исправление MKuznetsov, (текущая версия) :
Записываю clock_gettime() до и после nanosleep(), и аргумент nanosleep
не делай так.
разверни nanosleep под свои нужды: надо считать таймер, вычислить время когда «проснуться», взять пакет из очереди,установить таймер, уйти в wait и наконец-то отправить. Будет точнее, хотя подводных камней хренова гора.
// псевдокод
while (1) {
tm=clock_gettime();
buf = queue.poplast(); //< это время у тебя терялось
if (!buf) continue;
tm+=min;
setitimer(ITIMER_REAL,tm);
wait();
send(buf);
}
Исходная версия MKuznetsov, :
Записываю clock_gettime() до и после nanosleep(), и аргумент nanosleep
не делай так.
разверни nanosleep под свои нужды: надо считать таймер, вычислить время когда «проснуться», взять пакет из очереди,установить таймер, уйти в wait и наконец-то отправить. Будет точнее, хотя подводных камней хренова гора.
// псевдокод while (1) { tm=clock_gettime(); buf = queue.poplast(); //< это время у тебя терялось if (!buf) continue; tm+=min; setitimer(ITIMER_REAL,tm); wait(); send(buf); }