Junior — Middle
Čo sa deje s vláknami pri použití funkcie sync a ktoré vlákno je v procese zablokované?
sobes.tech AI
Odpoveď od AI
Funkcia sync v kontexte viacvláknového prostredia (napríklad v GCD na iOS) vykonáva úlohu synchronne, teda volajúci vlákno je zablokované, kým sa úloha nedokončí. Ak zavoláte sync z hlavného vlákna na frontu, ktorá sa tiež vykonáva v hlavnom vlákne, povedie to k deadlocku, pretože hlavné vlákno bude čakať na dokončenie úlohy, ktorá nemôže začať, kým hlavné vlákno nebude uvoľnené.
Týmto spôsobom blokuje použitie sync volajúce vlákno a vykonávanie kódu je pozastavené do dokončenia úlohy.