Sobes.tech
Junior — Middle

Ako rozlíšiť paralelné vykonávanie úloh od konkurenčných procesov?

sobes.tech AI

Odpoveď od AI

Paralelné vykonávanie úloh a konkurenčné procesy sú odlišné koncepty, hoci obe súvisia s multitaskingom.

  • Paralelné vykonávanie znamená, že viacero úloh sa skutočne vykonáva súčasne, napríklad na viacjadrovom procesore. V iOS to môže byť realizované pomocou GCD (Grand Central Dispatch) alebo OperationQueue, kde sa úlohy spúšťajú na rôznych vláknach.

  • Konkurenčné procesy sú úlohy, ktoré zdieľajú rovnaký čas CPU, ale nie sú nevyhnutne vykonávané súčasne. Operačný systém medzi nimi prepína, čím vytvára ilúziu súčasnosti.

Ako ich odlíšiť:

  • Ak zariadenie má viac jadier a úlohy sa spúšťajú na rôznych jadrách, ide o paralelizmus.
  • Ak sa úlohy vykonávajú na jednom jadre, ale veľmi rýchlo sa prepínajú, ide o konkurenciu.

V iOS to možno overiť sledovaním správania vlákien a využitia CPU. Napríklad, ak sa úlohy spúšťajú v rôznych frontoch s QoS a skutočne využívajú rôzne jadrá, ide o paralelné vykonávanie.

Príklad s GCD:

DispatchQueue.global(qos: .userInitiated).async {
    // Úloha 1
}
DispatchQueue.global(qos: .background).async {
    // Úloha 2
}

Tu môžu byť úlohy vykonávané paralelne, ak to systém umožňuje.