2010/5/11 Schwab,Wilhelm K <[email protected]>: > 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. > someone still has to do that for you, i.e. wait for a completion of blocking operation.
> 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. > Btw, its good that you mentioned this feature. Given that i have a full control, what happens with NativeBoost, i could create a native thread to serve for handling such 'overlapped' calls, and at image side, it will just put a process, which made a call into a waitable state, while other processes could still continue to run. > 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]> >> >> >> 2010/5/10 Andrei Stebakov <[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] >>> 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 > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > -- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
