Reputation: 655
Is it possible to implement Counting Semaphore in ios application?
Upvotes: 6
Views: 19750
Reputation: 3532
In Swift 3 you can use a DispatchSemaphore
.
// initialization
let semaphore = DispatchSemaphore(value: initialValue)
// wait, decrement the semaphore count (if possible) or wait until count>0
semaphore.wait()
// release, increment the semaphore count
semaphore.signal()
Upvotes: 3
Reputation: 18855
Like this:
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
[self methodWithABlock:^(id result){
//put code here
dispatch_semaphore_signal(sem);
[self methodWithABlock:^(id result){
//put code here
dispatch_semaphore_signal(sem);
}];
}];
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
Credit http://www.g8production.com/post/76942348764/wait-for-blocks-execution-using-a-dispatch
Upvotes: 8
Reputation: 8756
I was unable to find a native IOS object to do this but it works just fine using the C library:
#import "dispatch/semaphore.h"
...
dispatch_semaphore_t activity;
...
activity = dispatch_semaphore_create(0);
...
dispatch_semaphore_signal(activity);
...
dispatch_semaphore_wait(activity, DISPATCH_TIME_FOREVER);
Hope that helps.
Upvotes: 4
Reputation: 19641
Yes, it is possible. There are quite a few synchronization tools available:
I'd suggest reading "Threading Programming Guide" and asking something more specific.
Upvotes: 17