Middle
Kui üks füüsiline tuum täidab kahte niiti, kas see toimub sünkroonselt või paralleelselt?
sobes.tech AI
Vastus AI-lt
See toimub sünkroonselt samal mikromomendil samaaegselt täitmise mõttes. Füüsiline ressurss (tuum) ei saa täita kahte ülesannet täielikult paralleelselt.
Android operatsioonisüsteem kasutab eelnevalt määratavat mitmetöötlust. Tuum vahetab niitide vahel, määrates igale väikeseid ajavõtteid. See loob illusiooni paralleelsusest (konkurents).
// Näide: eelnevalt määratatud mitmetöötlus
fun main() {
val thread1 = Thread {
for (i in 1..5) {
println("Niit 1: $i")
Thread.sleep(10) // Töö imiteerimine
}
}
val thread2 = Thread {
for (i in 1..5) {
println("Niit 2: $i")
Thread.sleep(10) // Töö imiteerimine
}
}
thread1.start()
thread2.start()
}
Ülaltoodud näites näeme, et mõlema niidi väljund muutub vaheldumisi, mis näitab konteksti vahetust nende vahel.
Kontseptsioonid:
- Paralleelsus: mitme ülesande samaaegne täitmine samal ajal mitmel füüsilisel CPU-l või tuumal.
- Sünkroonne / Konkurentsivõimeline: mitme ülesande täitmine kindlal ajavahemikul, kui protsessor kiiresti vahetab ülesannete vahel, luues illusiooni nende samaaegsest täitmisest.
Seega, ühe tuuma peal toimub mitme niidi sünkroonne (konkurentsivõimeline) täitmine konteksti vahetamise kaudu.