3 ms·
These are cooperatively scheduled green threads... I feel the word "coroutine" is slowly losing its original meaning, similar to what happened to "lambda".
by nialv7 3y ago
These are cooperatively scheduled green threads...
I feel the word "coroutine" is slowly losing its original meaning, similar to what happened to "lambda".
- wavemode 3y agowhat was the original meaning of lambda?
- animaomnium 3y agoeleventh letter of the greek alphabet, derived from phoenecian "lamed", etc.
- bee_rider 3y agoMaybe they mean as in lambda calculus? Although, deep in our hearts we all must know that lambda was already taken, it is an eigenvalue.
- samatman 3y agoI don't know where you're getting that impression. These are stackful, symmetric coroutines with a build-in scheduler. It implements suspend and resume. You can call that a green thread if you want, or a fiber or whatever. They're coroutines. The API docs make all of this clearer than the README. https://github.com/tidwall/neco/blob/main/docs/API.md https://github.com/tidwall/neco/blob/main/docs/API.md
- nialv7 3y agoI think the replies l got here more or less proves my point. So a coroutine is basically something you can explicitly yield control flow from or give control flow to. neco doesn't really let you do that. Caller of neco_resume isn't relinquishing the control flow to another coroutine. neco_yield looks like a coroutine yield, but for asymmetric coroutine it should yield to caller, for symmetric coroutine it should let you specify who you are yielding to. This one does neither. And I feel if you stretch the definition of coroutine to include this, then you can basically call most multitasking systems coroutines, rendering the concept mostly useless.
- samatman 3y agoThese are coroutines. Just... look at the code, this isn't a proprietary binary product where you have to take someone's word for it. They're very clearly coroutines. I don't know what else to say here.
- dkjaudyeqooe 3y agoCoroutine is definitely appropriate here. Any implementation that has one function (routine) executing while others are paused is applicable. It always means cooperative multitasking, which this is. No meaning lost whatsoever.
- nialv7 3y agoCoroutine doesn't just mean cooperative multitasking, it means a specific form of cooperative multitasking. There's value in making that distinction. Also don't get me wrong, meaning of words do change, I am grumpy about it but that's fine. Kinda feel weird to have people telling me it has always meant that.
- dkjaudyeqooe 3y agoOK, but what's the distinction? What are the different kinds of cooperative multitasking here?