<br><br><div class="gmail_quote">On Tue, Oct 28, 2008 at 4:05 PM, Greg Buchholz <span dir="ltr">&lt;<a href="mailto:sleepingsquirrel@yahoo.com">sleepingsquirrel@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
 &nbsp; &nbsp;I notice that the system isn&#39;t responsive when something else is running (for example, while starting up an application like SqueakMap). &nbsp;Can anyone point me in the direction of a document describing Squeak&#39;s theory of operation when it comes to threads and/or the user interface? &nbsp;Is Squeak a cooperative multi-tasking system, or is the UI single threaded, or...?<br>

</blockquote></div><br><br>I don&#39;t know about documentation, but I can tell you what I know.<br><br>Smalltalk, the language rather than implementations, has good support for multitasking and is (in my opinion) one of the best languages for doing concurrent programming.<br>
<br>The Squeak VM unfortunately only runs on a single OS process. It can&#39;t use multiple CPU cores. I believe this is the case for all other available Smalltalk VMs except for GemStone? <br><br>The VM does simulate multiple &quot;green threads&quot;. In your code, you can do:<br>
<br>[ some code ] fork.<br><br>Which will create another process to run &quot;some code&quot; in parallel. There are semaphores available for synchronisation and higher-level abstractions can be built. However, the scheduler that Squeak uses doesn&#39;t perform very well and code can easily be starved of CPU time.<br>
<br>Like Bert said, Morphic is, unfortunately, single-threaded.<br><br>Gulik.<br clear="all"><br>-- <br><a href="http://people.squeakfoundation.org/person/mikevdg">http://people.squeakfoundation.org/person/mikevdg</a><br>
<a href="http://gulik.pbwiki.com/">http://gulik.pbwiki.com/</a><br>