5 ms·
Which parts are the coroutines?
by drudru11 6y ago
Which parts are the coroutines?
- Jasper_ 6y agoMultiple methods in that snippet use something like: while(true) { Animate(image); wait 200; } implies there are multiple synchronous execution stacks. It's not threading, as the synchronization points are explicit.
- _0ffh 6y ago>synchronization points are explicit Hmmm, I'd have just called it cooperative threading/multitasking then. Or do you think that would be wrong?
- ghusbands 6y agoCoroutines and cooperative threading/multitasking are indeed threading. I assume they meant to say that it was neither preemptive nor parallel, which makes it somewhat limited. Some people think a system has to be one or both of those to be called threading.
- Jasper_ 6y agoFor me, and for a vast majority of people I'd say, the word "threading" in common parlance implies pre-emptive scheduling with implicit synchronization points.
- TeMPOraL 6y agoIt wouldn't. That's literally what coroutines are. In-process, lightweight, cooperative multitasking, built in as a language feature (or at least close enough to it).
- DagAgren 6y agoIt is not. Coroutines are a much more fundamental feature. They can be used to implement cooperative multitasking, and since that is such a common use case, they have gotten confused with the concept of cooperative multitasking. Actual coroutines are a lot more flexible and interesting than just cooperative multitasking, though.
- _0ffh 6y agoErm, I'm pretty sure I can implement coroutines using cooperative multitasking. Also, the other way around. So I'd say they're equivalent in that sense.
- DagAgren 6y agoCooperative multitasking usually involves a scheduler. Coroutines are called explicitly, which you can't do through a scheduler.
- _0ffh 6y agoNow you're really just making claims about implementation details. That doesn't make one concept more "fundamental" or "flexible" than the other, while "interesting" is just a subjective judgement.
- DagAgren 6y agoI'm not. The scheduler decides what code to execute next, the caller does not. With coroutines, the caller explicitly decides what code to execute next. That's a fundamental difference.
- _0ffh 6y agoExplicitly selecting what code to execute next can be trivially achieved in a cooperative multitasking system. Naturally, the details work out differently. That's because both concepts are equivalent, just not the same.
- gpderetta 6y agocooperative threading is just coroutines plus a scheduler.