Làm thế nào bạn có thể xác định xem một số dispatch_semaphore_t
đang chờ đợi trên w/out gây ra một sự chờ đợi vào nó? Ban đầu tôi đã nghĩ:Làm thế nào để xác định xem một semaphore công văn đang được chờ đợi?
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
NSLog(@"Resources available, shouldn't wait");
}
Nhưng hành vi làm dispatch_semaphore_wait()
semaphore được giảm đi như vậy thì tôi đã suy nghĩ:
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
dispatch_semaphore_signal(mySemaphore);
NSLog(@"Resources available, shouldn't wait");
}
nào có kết quả cuối cùng của việc không decrementing các semaphore nhưng có vẻ như một hack , đề xuất?
EDIT
Như tôi đã gõ ra những gì tôi đang làm và làm thế nào tôi đi đến kết luận này, tôi nhận ra rằng tôi đã thực sự suy nghĩ về các giải pháp một cách sai lầm, tôi chỉ muốn biết nếu tôi là chờ một tài nguyên và có thể hiển thị hộp thoại 'chờ' cho người dùng. Tôi nghĩ rằng đây là đúng cách để làm điều đó:
Điều này không thể thực hiện được (ít nhất là không đáng tin cậy) và thực tế bạn muốn làm điều đó gợi ý lỗi thiết kế. Tôi tham gia @das khi hỏi: bạn đang cố gắng làm gì ở mức trừu tượng cao? Tình huống nào khiến bạn nghĩ rằng bạn muốn biết liệu một semaphore có đang chờ đợi không? –
@KenThomases Bạn nói đúng, tôi đã đi sai hướng này, tôi đã chỉnh sửa trong giải pháp tốt hơn. – Shizam