Linked by Thom Holwerda on Tue 13th Oct 2009 18:24 UTC, submitted by Lazarus
FreeBSD Not too long ago, Apple open sourced its Grand Central Dispatch library, which aids in developing multithreaded code. It was suggested that it could be ported to other platforms, and the FreeBSD team has done exactly that. They have also done a lot of work related to getting GCD to work in a POSIX environment.
Thread beginning with comment 389060
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Neato
by vivainio on Tue 13th Oct 2009 20:20 UTC in reply to "RE: Neato"
vivainio
Member since:
2008-12-26


Also of note is that Apple not only open-sourced the GCD library, but it's also Apple's intention to submit blocks as an official extension to one or more of the C-based languages.


This, however, is *much* more controversial than GCD. I don't expect to see much love for the feature in C programming circles, as it turns C into something completely different...

Reply Parent Score: 2

RE[3]: Neato
by tyrione on Tue 13th Oct 2009 21:34 in reply to "RE[2]: Neato"
tyrione Member since:
2005-11-21

"
Also of note is that Apple not only open-sourced the GCD library, but it's also Apple's intention to submit blocks as an official extension to one or more of the C-based languages.


This, however, is *much* more controversial than GCD. I don't expect to see much love for the feature in C programming circles, as it turns C into something completely different...
"

There seems to be plenty of love in C with the interest the LLVM project has going on with blocks and C programming.

Reply Parent Score: 5

RE[3]: Neato
by zlynx on Tue 13th Oct 2009 21:35 in reply to "RE[2]: Neato"
zlynx Member since:
2005-07-20

Not completely different.

AFAIK, "blocks" is a bit of syntactic sugar that makes it much easier to write:

struct anon_func_1_state_s {
scope_var_a_type a;
scope_var_b_type b;
int c;
int d;
};

void anon_func_1(void *state)
{
...
}

const struct anon_func_1_state_s anon_func_1_state = {scope_var_a, scope_var_b, 3, 4};
dispatch_async_f(queue, &anon_func_1_state, &anon_func_1);

But behind the scenes a block is exactly the same as the above, and a heck of a lot easier to write.

Again, AFAIK.

Reply Parent Score: 3

RE[4]: Neato
by Mark Williamson on Wed 14th Oct 2009 02:45 in reply to "RE[3]: Neato"
Mark Williamson Member since:
2005-07-06

Not completely different.

AFAIK, "blocks" is a bit of syntactic sugar that makes it much easier to write:
...


I thought that - and that seemed like an extension I'd be happy to have. But then I read something about the closure structure getting automatically copied to the heap if necessary, in certain circumstances. You can see you'd need to do this if you wanted to pass someone a closure to be called on completion, then return from the function you're currently running in.

The question is whether the C runtime is doing this or whether it's some kind of magic in GCD. If it's magic in GCD then I'm happy. If it's magic that's added to the C runtime then I'm not - C does not do heap memory allocations behind your back in basically any other context. so the addition of such would be highly disruptive. I'd really like clarification on how this blocks feature works!

Assuming it *is* just syntactic sugar then I would be all for it, I think that would be a fantastic feature for cutting down on code verbosity whilst still remaining close to the hardware.

Reply Parent Score: 3