W jaki sposób można ustalić, czy dispatch_semaphore_t
oczekuje na w/out powodując oczekiwanie? I początkowo myślał:Jak ustalić, czy jest oczekiwany semafor wysyłkowy?
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
NSLog(@"Resources available, shouldn't wait");
}
ale akt robi dispatch_semaphore_wait()
semafor jest zmniejszany tak wtedy myślałem:
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
dispatch_semaphore_signal(mySemaphore);
NSLog(@"Resources available, shouldn't wait");
}
który ma wynik końcowy nie odlicza semafora, ale wydaje się, hack , propozycje?
EDIT
Jak pisałem, co robię i jak doszedłem do tego wniosku, zdałem sobie sprawę, że rzeczywiście myśli o rozwiązanie w niewłaściwy sposób, chciałem tylko wiedzieć, czy jestem oczekiwanie na zasób i możliwość wyświetlenia użytkownikowi okna dialogowego "oczekiwania". Myślę, że to jest właściwa drogato zrobić:
Nie można tego zrobić (przynajmniej niezawodnie), a fakt, że chcesz to zrobić, sugeruje błąd projektowy. Dołączam do @das pytając: co próbujesz zrobić na wysokim poziomie abstrakcji? Jaka sytuacja sprawia, że myślisz, że chcesz wiedzieć, czy semafor jest wyczekiwany? –
@KenThomases Masz rację, podchodziłem do tego w niewłaściwy sposób, I Zredagowałem w lepszym rozwiązaniu. – Shizam