Kako razlikovati paralelno izvršavanje zadataka od konkurentnih procesa?
sobes.tech АИ
Одговор од АИ
Paralelno izvršavanje zadataka i konkurentni procesi su različiti koncepti, iako su oba povezana sa multitaskingom.
-
Paralelno izvršavanje znači da više zadataka zaista istovremeno rade, na primer, na višedeljnom procesoru. Na iOS-u, ovo se može implementirati pomoću GCD (Grand Central Dispatch) ili OperationQueue, gde se zadaci pokreću na različitim nitima.
-
Konkurentni procesi su zadaci koji dele isto CPU vreme, ali ne moraju nužno da se izvršavaju istovremeno. Operativni sistem prebacuje između njih, stvarajući iluziju istovremenosti.
Kako razlikovati:
- Ako uređaj ima više jezgara i zadaci se pokreću na različitim jezgrima, to je paralelizam.
- Ako se zadaci izvršavaju na jednom jezgru, ali se vrlo brzo prebacuju, to je konkurencija.
Na iOS-u, ovo se može proveriti posmatranjem ponašanja niti i korišćenja CPU-a. Na primer, ako se zadaci pokreću u različitim redovima sa QoS i zaista koriste različite jezgre, to je paralelno izvršavanje.
Primer sa GCD:
DispatchQueue.global(qos: .userInitiated).async {
// Zadatak 1
}
DispatchQueue.global(qos: .background).async {
// Zadatak 2
}
Ovde, zadaci mogu biti izvršeni paralelno, ako sistem to dozvoli.