У меня есть задание, с которым я борюсь, есть ли шанс, что кто-то может мне помочь?
По сути, мы создали программу, которая выдает 50 байтов данных в терминал (я использую cygwin) через FIFO трубопровод. Здесь нет задержки, потому что терминал очень быстрый и у него достаточно времени, чтобы потреблять все данные. Это задание касается экспериментов с задержкой. В общем, в следующей части я должен реализовать этот фрагмент кода:
int main()
{
char q;
while(1)
{
q=getc(stdin);
if (q == EOF) return 0;
usleep(x); // HERE X IS THE DELAY
printf("%c",q);
fflush(stdout);
}
}
По сути, эта программа имитирует задержку. Он предназначен для накопления данных в буфере до того момента, когда буфер заполнится, и он не сможет реагировать на ввод достаточно быстро (Первоначально написанная программа, о которой я упоминал ранее, которая производит 50 байтов в секунду, - игра, в которой вводятся клавиши со стрелками) .
Мне не дают никакой дополнительной информации. Проблема не в том, что я не могу заставить программу задерживаться. Я могу положить x как нечто достаточно большое с задержкой, и задержка будет заметна, и все будет хорошо. Что мне нужно, это расчеты и обсуждение. Скажем, если у меня usleep (50000), задержка 0,05 с, как рассчитать скорость заполнения буфера FIFO? Я попытался посмотреть на inte rnet и обнаружил, что размер этого буфера FIFO составляет 65536 байт, но я все еще не мог определить, насколько быстро терминал считывает данные, и как это вообще связано с задержкой, которую я ввел? Мне нужно найти соответствующий случай, то есть когда данные накапливаются с максимальной скоростью чтения терминала (данные в буфере не накапливаются), а затем увеличивают задержку настолько, чтобы данные начали накапливаться в буфере до тех пор, пока он не заполнится и не будет заполнен. лаг начинает наблюдаться? Если я спрашиваю это недостаточно четко, дайте мне знать, какой бит я мог бы уточнить.
Спасибо за ваше время.