LINUX.ORG.RU

История изменений

Исправление 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); }