Wie können Sie feststellen, ob auf eine dispatch_semaphore_t
gewartet wird, ohne dass eine Wartezeit aufgetreten ist? Ich war anfangs dachte:Wie kann festgestellt werden, ob auf einen Versand-Semaphor gewartet wird?
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
NSLog(@"Resources available, shouldn't wait");
}
Aber der Akt der dispatch_semaphore_wait()
die Semaphore tun verringert wird so dann dachte ich:
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
dispatch_semaphore_signal(mySemaphore);
NSLog(@"Resources available, shouldn't wait");
}
, die das Endergebnis nicht Erniedrigen des Semaphore hat aber scheint wie ein Hack , Vorschläge?
EDIT
Als ich die Eingabe aus, was ich tue und wie ich zu diesem Schluss kam erkannte ich, dass ich in der Tat über die Lösung dachte falsch, ich wollte nur wissen, ob ich war Warten auf eine Ressource und in der Lage sein, einen "Warte" -Dialog für den Benutzer anzuzeigen. Ich denke, das ist die richtige Weg, es zu tun:
Dies ist nicht möglich (zumindest nicht zuverlässig) und die Tatsache, dass Sie es tun möchten, deutet auf einen Konstruktionsfehler hin. Ich schließe mich @das an und frage: Was versuchst du auf hohem Abstraktionsniveau zu tun? Welche Situation lässt Sie denken, dass Sie wissen wollen, ob ein Semaphor gewartet wird? –
@KenThomases Du hast Recht, ich kam auf dem falschen Weg, ich bearbeitete die bessere Lösung. – Shizam