←back to thread

292 points kristoff_it | 6 comments | | HN request time: 0.6s | source | bottom
1. jayd16 ◴[] No.44610245[source]
I kind of think the author simply pulled the concept of yielding execution out of the definition of concurrency and into this new "asynchrony" term. Then they argued that the term is needed because without it the entire concept of concurrency is broken.

Indeed so, but I would argue that concurrency makes little sense without the ability to yield and is therefore intrinsic to it. Its a very important concept but breaking it out into a new term adds confusion, instead of reducing it.

replies(3): >>44610401 #>>44610418 #>>44610507 #
2. LegionMammal978 ◴[] No.44610401[source]
I'd count pure one-to-one parallelism as a form of concurrency that doesn't involve any yielding. But otherwise, I agree that all forms of non-parallel concurrency have to be yielding execution at some cadence, even if it's at the instruction level. (E.g., in CUDA, diverging threads in a warp will interleave execution of their instructions, in case one branch tries blocking on the other.)
3. kristoff_it ◴[] No.44610418[source]
>I kind of think the author simply pulled the concept of yielding execution out of the definition of concurrency and into this new "asynchrony" term.

Quote from the article where the exact opposite is stated:

> (and task switching is – by the definition I gave above – a concept specific to concurrency)

replies(1): >>44610729 #
4. omgJustTest ◴[] No.44610507[source]
Concurrency does not imply yielding...

Synchronous logic does imply some syncing and yielding could be a way to sync - which is what i expect you mean.

Asynchronous logic is concurrent without sync or yield.

Concurrency and asynchronous logic do not exist - in real form - in von Neumann machines

replies(1): >>44615380 #
5. jayd16 ◴[] No.44610729[source]
Well I'm having a hell of a time understanding what this article is trying to say. On a 3rd and 4th pass I think perhaps they mean task (in)dependency tracking is a fundamental concept. Independent tasks have "asynchrony." (Can we just say dependency and independency?)

But even with that definition, it seems like the idea of promises, task tracking, etc is well tread territory.

Then they conclude with how fire and forget tasks solve coloring but isn't that just the sync-over-async anti-pattern? I wouldn't be excited that my UI work stops to run something when there are no more green threads but they seem excited by it.

Anyway, I guess I got too distracted by the high concept "this is a fundamental change in thinking" fluff of the article.

6. gf000 ◴[] No.44615380[source]
Could you expand on what you mean?