Class: Dispatch::Group
Overview
Dispatch::Group is used to aggregate multiple blocks that have been submitted asynchronously to different queues. This lets you ensure they have all completed before beginning or submitting additional work.
Class Method Summary (collapse)
Instance Method Summary (collapse)
-
- Dispatch::Group.new
constructor
Returns a Group allowing for aggregate synchronization, as defined in: dispatch_group_create(3).
-
- notify { ... }
Asynchronously schedules a block to be called when the previously submitted dispatches for that group have completed.
-
- notify { ... }
Asynchronously schedules a block to be called when the previously submitted dispatches for that group have completed.
-
- wait
Waits until all the blocks associated with the grp have finished executing or until the specified timeout has elapsed.
Methods inherited from Object
#dispatch_object, #resume!, #suspend!, #suspended?
Methods inherited from NSObject
#!, #!=, #!~, #<=>, #==, #===, #=~, #Rational, #__callee__, #__method__, #__send__, #__type__, `, allocWithZone:, #autoContentAccessingProxy, autoload, autoload?, autorelease_pool, #awakeAfterUsingCoder:, binding, block_given?, caller, cancelPreviousPerformRequestsWithTarget:, cancelPreviousPerformRequestsWithTarget:selector:object:, catch, class, classFallbacksForKeyedArchiver, #classForCoder, #classForKeyedArchiver, classForKeyedUnarchiver, #clone, conformsToProtocol:, #copy, copyWithZone:, #dealloc, #define_singleton_method, description, display, #doesNotRecognizeSelector:, #dup, #enum_for, #eql?, #equal?, #extend, fail, #finalize, format, #forwardInvocation:, #forwardingTargetForSelector:, framework, #freeze, #frozen?, getpass, gets, global_variables, #init, initialize, #initialize_clone, #initialize_copy, #initialize_dup, #inspect, instanceMethodForSelector:, instanceMethodSignatureForSelector:, #instance_eval, #instance_exec, #instance_of?, #instance_variable_defined?, #instance_variable_get, #instance_variable_set, #instance_variables, instancesRespondToSelector:, isSubclassOfClass:, #is_a?, iterator?, #kind_of?, lambda, load, load_bridge_support_file, load_plist, local_variables, loop, #method, #methodForSelector:, #methodSignatureForSelector:, #methods, #mutableCopy, mutableCopyWithZone:, new, #nil?, open, p, #performSelector:onThread:withObject:waitUntilDone:, #performSelector:onThread:withObject:waitUntilDone:modes:, #performSelector:withObject:afterDelay:, #performSelector:withObject:afterDelay:inModes:, #performSelectorInBackground:withObject:, #performSelectorOnMainThread:withObject:waitUntilDone:, #performSelectorOnMainThread:withObject:waitUntilDone:modes:, print, printf, #private_methods, proc, #protected_methods, #public_method, #public_methods, #public_send, putc, puts, raise, rand, readline, readlines, #replacementObjectForCoder:, #replacementObjectForKeyedArchiver:, require, resolveClassMethod:, resolveInstanceMethod:, #respond_to?, #respond_to_missing?, select, #send, setVersion:, #singleton_methods, sprintf, srand, superclass, #taint, #tainted?, #tap, test, throw, #to_plist, #to_s, trace_var, trap, #trust, #untaint, untrace_var, #untrust, #untrusted?, version
Constructor Details
- (Dispatch::Group) Dispatch
Returns a Group allowing for aggregate synchronization, as defined in: dispatch_group_create(3)
You can dispatch multiple blocks and track when they all complete, even though they might run on different queues. This behavior can be helpful when progress can not be made until all of the specified tasks are complete.
gcdg = Dispatch::Group.new
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class NSObject
Class Method Details
+ (Object) alloc
Instance Method Details
- (Object) notify(queue) { ... }
Asynchronously schedules a block to be called when the previously submitted dispatches for that group have completed.
gcdq = Dispatch::Queue.new('doc')
grp = Dispatch::Group.new
gcdq.async(grp) { print 'foo' }
grp.notify(gcdq) { print 'bar' } #=> foobar
- (Object) notify(queue) { ... }
Asynchronously schedules a block to be called when the previously submitted dispatches for that group have completed.
gcdq = Dispatch::Queue.new('doc')
grp = Dispatch::Group.new
gcdq.async(grp) { print 'foo' }
grp.notify(gcdq) { print 'bar' } #=> foobar
- (Boolean) wait(timeout = nil)
Waits until all the blocks associated with the grp have finished executing or until the specified timeout has elapsed. The function will return true if the group became empty within the specified amount of time and will return false otherwise. If the supplied timeout is nil, the function will wait indefinitely until the specified group becomes empty, always returning true.
gcdq = Dispatch::Queue.new('doc')
grp = Dispatch::Group.new
gcdq.async(grp) { sleep 4 }
grp.wait(5) #=> true