Andrei
Having do-its block the UI is a feature, especially since you can explicitly 
fork a new (Smalltalk) process to do the work.  What is **NOT** acceptable (and 
I fear I will discover is "easy" to cause to happen) is for DNS and socket 
operations that have been forked to block the main thread.

Dolphin has a feature called overlapped calls that allow external functions to 
be executed on a new OS thread specifically to avoid hanging the entire image.  
There are restrictions and disclaimers even then, and the default behavior is 
to block the UI.

Bill


________________________________
From: [email protected] 
[mailto:[email protected]] On Behalf Of Andrei 
Stebakov
Sent: Monday, May 10, 2010 5:31 PM
To: [email protected]
Cc: Adrian Lienhard
Subject: Re: [Pharo-project] Single threaded Pharo IDE?



2010/5/10 Mariano Martinez Peck 
<[email protected]<mailto:[email protected]>>


2010/5/10 Andrei Stebakov <[email protected]<mailto:[email protected]>>



I just started to use Pharo 1.0. So please bear with me since I may not fully 
understand the full concept of the IDE. Sometimes the whole IDE freezes 
indefinitely.

Welcome ! we hope you enjoy ;)

So questions:
1) Looks like evaluating anything from the Workspace freezes the whole UI for 
the time of execution. Is it a bug or a feature?

More or less. Pharo has a green thread implementation. I will tell you what I 
understand. Green threads means, there is only ONE OS thread, and then, 
internally (in Smalltalk) there exists their own threads, scheduler, 
priorities, etc. The UI is just a process that is running, with a certain 
priority. Go to the world menu, then "Tools" -> "Process Browser". There you 
will see all the current processes with their priorities. You can notice the UI 
process.

But you must agree that it still looks fishy when your whole UI blocks when you 
execute something lengthy (like new package install)...
Well, if the majority of Pharo users think that it's OK who am I to argue? ;)


 So...whatever you do here, it will be done inside that process. If you do 
normal things, then yes, I guess the UI freezes. However, you way want to 
launch another thread to do what you want and with a lower priority than the UI.

Do this test: open a workspace and a transcript. In the workspace, evaluate:

[ 1000 timesRepeat: [Transcript show: 'mariano'; cr] ] forkAt: Processor 
userBackgroundPriority

there, you will see that you are able to use the ide, while the block of 
writing to Transcript is working "at the same time".

Here the most important message is forkAt:    . fork just fork the block with 
the standard priority ("Processor activePriority"). If you want to specify the 
priority, you have to use forkAt:
Yes, the [ HTTPSocket httpGet: 'http://www.pharo-project.org/home'] forkAt: 
Processor userBackgroundPriority doesn't block the UI anymore...
If it's the way to go, shouldn't we have a "special non-blocking" Workspace 
which does exactly this (or have an option to run your Workspace command with a 
background priority)?



2) Sometimes executing something freezes the UI indefinitely. Is there a way to 
cancel the operation (other than restarting the image)?
Strangely in my case the IDE froze on evaluating HTTPSocket httpGet: 
'http://www.pharo-project.org/home'


Yes, Sockets are an example where sometimes they block the whole image. Are you 
behind a proxy ? do you have a timeout error after a while ?
I have just tested and it also freezes for me in Mac OS. I have no idea. Maybe 
other can help.

If I execute HTTPSocket httpGet: 'http://www.pharo-project.org/home'. in a 
Workspace having a Transcript window open, I got a never-ending messages in the 
Transcript window like:
"redirecting to http://www.cmsbox.com/errors/hostnotfound.html";.
Yes, I am behind a firewall, but other urls work with the same command.



But yes, usually (sometimes it doesn't work) there is a combination of keys 
that send a system interruption. Check this links:

http://wiki.squeak.org/squeak/899
http://wiki.squeak.org/squeak/1542

Great! Alt-. works.
BTW Adrian, I think this deserves a FAQ entry as it has been asked several 
times.

Cheers

Mariano

Thank you,
Andrei

_______________________________________________
Pharo-project mailing list
[email protected]<mailto:[email protected]>
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[email protected]<mailto:[email protected]>
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to