Sobes.tech
Junior — Middle

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.