It creates a stack per coroutine and if the coroutine would block, it switches to another coroutine instead.<p>As for threads, it&#x27;s single threaded (yet concurrent). If you want to take advantage of multicore machines, there&#x27;s a step in the tutorial about that: <a href="http:&#x2F;&#x2F;libmill.org&#x2F;tutorial.html#step7" rel="nofollow">http:&#x2F;&#x2F;libmill.org&#x2F;tutorial.html#step7</a>