Middle
Kai vienas fizinis branduolys vykdo du srautus, ar tai įvyks sinchroniškai ar paraleliai?
sobes.tech AI
Atsakymas iš AI
Tai vyks sinchroniškai, atsižvelgiant į vienalaikį vykdymą tame pačiame mikro-momentu. Fizinė ištekliai (branduolys) negali vykdyti dviejų užduočių visiškai paraleliai.
„Android“ operacinė sistema naudoja iš anksto numatytą daugiaprocesinį vykdymą. Branduolys perjungia tarp srautų, skirdamas kiekvienam mažus laiko kvantus. Tai sukuria iliuziją apie paralelizmą (konkurenciją).
// Pavyzdys: iš anksto numatytas daugiaprocesinis vykdymas
fun main() {
val thread1 = Thread {
for (i in 1..5) {
println("Srautas 1: $i")
Thread.sleep(10) // Darbo imitacija
}
}
val thread2 = Thread {
for (i in 1..5) {
println("Srautas 2: $i")
Thread.sleep(10) // Darbo imitacija
}
}
thread1.start()
thread2.start()
}
Aukščiau pateiktame pavyzdyje matome, kad abiejų srautų išvestis keičiasi, kas demonstruoja konteksto perjungimą tarp jų.
Sąvokos:
- Paralelizmas: kelių užduočių vienalaikis vykdymas tame pačiame momente keliuose fiziniuose CPU ar branduoliuose.
- Sinchroniškai / Konkurencingai: kelių užduočių vykdymas per tam tikrą laikotarpį, kai procesorius greitai perjungia tarp užduočių, sukurdami iliuziją apie jų vienalaikį vykdymą.
Taigi, vieno branduolio metu vyksta sinchroninis (konkurentinis) kelių srautų vykdymas per konteksto perjungimą.