Mitmelõimelisus

Thread ehk lõim on programmijupp, mis töötab paralleelselt teiste lõimedega. Pythonis toimub see paralleelsus küll vaid näiliselt, Global Interpreter Lock ehk GIL salvestab ühe lõime seisundi ning seejärel laeb teise lõime oma.

GIL-vaba ehk päris mitmelõimelisust võimaldab Java, C++, GO, C#, Swift, Kotlin ja Rust.

Mitmelõimelisus sobivad pika ooteajaga ülesannetele nagu:

  1. veebipäringud. CPU ootab tegevuseta, kuni server vastab päringule. Kui iga päring kestaks 1 sekund ja vaja on teha 100 päringut siis 1 lõime korral ootaks programm 100 sekundit, kuid 20 lõimega vaid 5 sekundit.

  2. failide lugeminekirjutamine. Eriti ajamahukad on võrgufailid, mis sõltuvad võrgu latentsusest. Paralleelsus võimaldab samaaegselt mitut pildifaili üles- või allalaadida.

../_images/asynchronous.png
  1. arvutimängud. NPC tegelaste jooksutamine (nagu AI otsuste tegemine), füüsika arvutamine (nagu gravitatsioon), animatsioonid, heliefektid on mõeldud toimuma mängu renderdamise ajal, mitte üksikult.