Diskuze: Sleep microseconds
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Spát mikrosekundy není dost dobře na majoritních OS možné, pokud:
Čekání v mikrosekundách je věc, která už moc dobře nelze řešit pasivním čekáním (čekající vlákno je přeplánováno jiným) kvůli režii. Takže bys musel čekat aktivně. Tam ale obvykle nemůžeš zaručit, že tvému vláknu nevyprší časové kvantum a není přeplánováno někým jiným.
Alespoň takhle to chodí ve Windows. Myslím si ale, že v Linuxu to bude podobné, pokud si nedokompiluješ do kernelu nějaké rozšíření pro realtime aplikace.
#include <stdio.h>
#include <time.h> // potrebné k funkcii
/* funkcia - pauza na 1 milisekundu */
void sleep(unsigned int msecund)
{
clock_t ciel; // deklarácia premennej typu clock_t
ciel = msecund + clock(); // vložiť do premennej čas o trvaní 1 milisekundy (sekunda má 1000 milisekúnd)
while (goal > clock()); // beží kým sa nevy-clock-uje po 0 (nulu)
}
/* napr.: použitie na spomalenie vypisu cyklu */
int main(void)
{
int i;
for (i = 1; i < 11; i++) {
printf("%d ", i);
sleep(200); // pauza na 200 milisekúnd, teda 0,2 sekundy
}
return 0;
}
Zobrazeno 3 zpráv z 3.