Hi Kristjan and Folks: >At PyCon I was approached by a core developer of CPython who asked me this: >If we had a hypothetical GIL-less CPython, would stackless (tasklets or >co-routines) still be a >useful constructs or would real threads be sufficient?
Yes tasklets would be useful constructs for two reasons. First a OS-thread uses more resources than a tasklet. Secondly and I think far more important reason, tasklets/channels are a simpler and more powerful concurrency construct. I think Go is an example of what a multi-core Stackless would look like. >3) Co-operative scheduling: To be able to run multiple execution >contexts without pre-emptive >switching is a huge win. If your problem is >such that you are IO bound anyway and cpu doesn"t >matter much then this can >be a very attractive programming model. Co-operative scheduling in the form of synchronous channels with buffers is a very simple and powerful concurrency model. John Reppy has a nice explanation of the attractiveness of synchronous channels in "Concurrent Programming in ML." >Any other thoughts? How would applications of stackless python be different >if there were no >GIL, i.e. threads could run in parallel (but tasklets were >co-operatively scheduled in each thread >as before)? I think it depends on how much one tries to abstract away in the runtime. Or what programming style one promotes. >For one thing, I know that many synchronization privmitives currently written >using channels >would need re->writing. They currently rely on tasklet.atomic >for atomicitiy which also prevents >thread switching (by preventing the thread >from releasing the GIL). If there were no GIL, we >would need to use >additional locking if we wanted our stackless locking primitives (e.g. >>stacklesslib.locks) to work between tasklets of different threads. Again, if looking at Go's runtime source code is any indication, in a multi-core world, Stackless's channel implement will get much more complicated. Perhaps since channels become threadsafe, primitives that are built on top of them, don't have to worry. Cheers, Andrew
_______________________________________________ Stackless mailing list Stackless@stackless.com http://www.stackless.com/mailman/listinfo/stackless