Every so often, someone asks me why Cincom Smalltalk doesn't use native (platform) threads - the assumption being that lightweight (i.e., managed by Smalltalk) level threads just can't cut it. Someone should tell Microsoft, because they have SQL Server using the same kind of model that Cincom Smalltalk uses:
Ken Henderson profiles the User Mode Scheduler (UMS) in SQL Server 2000 that requires developers to write code that runs efficiently, and yields often enough in the appropriate places. UMS provides more control and allows the server to scale better than it could with the Windows scheduler.
Read that last sentence a few times :) Then have a look a little further down in the article:
An important difference -- in fact, probably the most important difference—between the Windows scheduler and the SQL Server UMS is that the Windows scheduler is a preemptive scheduler, while UMS implements a cooperative model.
Just like what we do in Cincom Smalltalk. Read the article, and then look at the Smalltalk process model we use in CST. You'll see a lot of similarities.