Junior — Middle
Kas vyksta su srautais naudojant sync funkciją ir kuris srautas yra užblokuotas procese?
sobes.tech AI
Atsakymas iš AI
Daugiafunkcinio konteksto funkcija sync (pavyzdžiui, GCD iOS) vykdo užduotį sinchroniškai, tai yra, kviečiantis srautas yra užblokuotas, kol užduotis nebaigiama. Jei sync iškviesite iš pagrindinio srauto į eilę, kuri taip pat vykdoma pagrindiniame sraute, tai sukels deadlock'ą, nes pagrindinis srautas lauks užduoties pabaigos, kuri negali prasidėti, kol pagrindinis srautas nėra laisvas.
Todėl naudojant sync, kviečiantis srautas yra užblokuotas, ir kodo vykdymas yra sustabdytas iki užduoties pabaigos.