> 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

Reply via email to