Piszę szybki skrypt do uruchomienia w terminalu, który rozsyła do wątku tła kilka operacji. Bez dodatkowego wysiłku, po zakończeniu wszystkich moich wysyłek, kod dochodzi do końca pliku i kończy pracę, zabijając także moje operacje w tle. Jaki jest najlepszy sposób na utrzymanie przy życiu szybkiego skryptu, dopóki moje operacje w tle nie zostaną zakończone?Oczekiwanie na asynchroniczne wywołania w szybkim skrypcie
Najlepsze, co wymyśliłem, to następujące rzeczy, ale nie sądzę, że jest to najlepszy sposób, a nawet poprawny.
var semaphores = [dispatch_semaphore_t]()
while x {
var semaphore = dispatch_semaphore_create(0)
semaphores.append(semaphore)
dispatch_background {
//do lengthy operation
dispatch_semaphore_signal(semaphore)
}
}
for semaphore in semaphores {
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
}
możliwy duplikat [Wielu pracowników w narzędziu wiersza poleceń Swift] (http://stackoverflow.com/questions/28590701/multiple-workers-in-swift-command-line-tool) –