4. diel - Plánovanie a stavy vlákien v C ++
V minulej lekcii, Čakanie na vlákno v C ++ a odovzdávanie parametrov , sme si vysvetlili, ako na vlákno počkať a prečo je nutné na neho čakať v prvom rade. Ďalej sme si ukázali, ako odovzdať vláknu nejaké dáta cez parametre. V dnešnom tutoriále sa bližšie pozrieme na plánovanie vlákien z hľadiska operačného systému. Tak hor sa do toho.
Uspanie vlákna
Vlákno nemusia bežať po celú dobu behu programu. Môže napríklad nárazovo spracovať 1000 čísel a potom počkať nejaký čas, až bude mať ďalších 1000 čísel na spracovanie. Vlákno môžeme tzv. Uspať, tj. Pozastaviť jeho vykonávanie na určitú dobu. Napríklad na sekundu. Vlákno sa potom približne za sekundu spustí (hovoríme, že sa zobudí) a spracuje dáta, ktoré za túto sekundu prišla. Potom sa znovu na sekundu uspí a tak dokola.
V C ++ pre to máme metódu sleep_for()
na objekte
std::this_thread
. Tá uspí vlákno na dobu danú parametrom,
ktorý je typu std::chrono::duration
. Ešte, než sa pozrieme na
ukážku, znovu upozorním, že plánovanie vlákien je plne v rukách
operačného systému. Parameter udáva minimálny čas, po ktorý bude vlákno
uspanie, ale vlákno môže byť uspanie aj na dobu dlhšiu (a pravdepodobne i
bude).
Timeslices
Operačný systém totiž pracuje s tzv. Timeslices
...koniec náhľadu článku...
Pokračuj ďalej
Minul si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiové sekcie.
Obmedzená ponuka: Nauč sa všetko a ušetri
Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš so zmluvnými podmienkami.
- Neobmedzený a trvalý prístup k jednotlivým lekciím.
- Kvalitné znalosti v oblasti IT.
- Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.
Popis článku
Požadovaný článok má nasledujúci obsah:
V C ++ tutoriálu sa pozrieme, ako operačný systém vlákna plánuje, ako vlákno môžeme uspať as tým súvisiace stavy vlákien.
Kredity získaš, keď podporíš našu sieť. To môžeš urobiť buď zaslaním symbolickej sumy na podporu prevádzky alebo pridaním obsahu na sieť.