> If I use this to initiate a background "thread": > > > dispatch_async(dispatch_get_global_queue(0, 0), ^{ > > // do some stuff > > [self runMyFunction]; > > [self runAnotherFunction]; > > // do some more stuff > > }); > > > My question is with my sample calling runMyFunction or runAnotherFunction are > they blocking? Meaning will they block the background "thread" until they > are complete and then it will continue? Or must I put them into another kind > of block so that they finish FIFO? Thanks just looking for a confirmation as > I'm moving to GCD from threads...
You are correct in that they are "blocking" if I understand you correctly. There is nothing magic about the concept of GCD blocks, they are really just anonymous functions with a slightly unusual scope. You would be equally welcome to use the alternative dispatch_async_f API, which would have exactly the same outcome (code written in Mail; not complied!): void MyDispatchFunc(void *) { // do some stuff [self runMyFunction]; [self runAnotherFunction]; // do some more stuff } void foo(void) { dispatch_async_f(dispatch_get_global_queue(0, 0), MyDispatchFunc); } I hope it is obvious from this alternative formulation that there is nothing "magic" going on: the API call is just scheduling a call to MyDispatchFunc at the time GCD deems appropriate. Exactly the same is true of the example you gave, it is just that you are passing a block around instead of a function pointer. Hope that helps Jonny _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com