Доброго дня и ночи!
пробовал так
static int
limit_rate (struct request *req)
{
// char *fwd_for = forwarded_for (req);
u_int cli_spd_limit = 20 * 1024; // get_client_speed_limit (fwd_for);
u_int expected = 1000000 * (double)req->r_bytes / (double)cli_spd_limit;
printf ("bytes: %lu time: %lu expected %lu\n", req->r_bytes, req->r_time,
expected);
if (expected > req->r_time)
{
sleep_usec (expected - req->r_time);
}
}
...
GET_TIME_SLICE(&t1);
if ((nread = read (req->server_fd, buf, buf_size)) <= 0)
break;
GET_TIME_SLICE(&t2);
req->r_bytes = nread;
req->r_time = t2 - t1;
limit_rate (req);
out:
bytes: 1400 time: 111 expected 68359
sleep_usec, nsec: 67565520
но он как то сильно ошибается, вместо 20кб/с - 17
Подскажите пожалуйста где я натупил.
GET_TIME_SLICE - это gettimeofday
sleep_usec - nanosleep 
Ответ на:
комментарий
от halflife
Ответ на:
комментарий
от anonymous

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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Программирование alsa (не могу добиться нормального звука) (2010)
- Форум Программирование, ALSA (2010)
- Форум GLib проблема с потоками GMainLoop (2014)
- Форум Резать скорость Adept'a (2008)
- Форум V4L2: ошибка удаления буфера из очереди: недопустимый аргумент (2023)
- Форум Мы нашли очередную порцию глюков в Linux Kernel (2016)
- Форум чем резать скорость на VLAN (2010)
- Форум Что может резать скорость трафика? (2009)
- Форум как резать пользователям скорость соединения с инетом? (2000)
- Форум резать крышку? (2014)