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

Reply via email to