On Thu, Sep 30, 2010 at 2:26 PM, Ralph Shnelvar <ralphs / dos32.com> wrote:
> Robert,
>
> Thursday, September 30, 2010, 12:10:34 AM, you wrote:
>
> RK> On 09/29/2010 03:22 AM, Ralph Shnelvar wrote:
>>> [Note: =A0parts of this message were removed to make it a legal post.]
>
>>> Background:
>
>>> I am writing an FXRuby program. =A0My question should be independent of=
 FXRuby, though.
>
>>> FXRuby is a GUI for Ruby.
>
>>> If I understand some of the comments made here (and I probably don't) [=
see subject: interpreter cannot enter in the context from another thread] i=
t is a bad thing to attempt to run an FXRuby function in a non-main thread.
>
>
>
>
>>> So ... I have a non-main thread that wants to display a message box (i.=
e. "call" FXMessageBox").
>
>>> How can I invoke FXMessageBox in the context of the main thread?
>
>
>
>>> I can think of all sorts of ugly solutions.
>
>>> For instance:
>
>>> 1) Set some global_variable indicating the task I want to perform in th=
e main thread.
>>> 2) Do a thread.stop
>>> 3) have a timer in the main thread and have it dispatch based on global=
_variable
>>> 4) save the return code of FXMessageBox in a thread local variable the =
not-main-thread
>>> 5) Do a thread.run to wake up the stopped not-main-thread.
>
> RK> 6) Have a task queue which is read in the main thread. =A0You can eve=
n
> RK> store lambdas in there.
>
> Please explain more; a lot more.
>
> I am particularly confused how a task queue would work given that nothing=
 in the main thread can block since that would stop FXRuby's message pump.

Actually I do not know RXRuby - I just answered based on the
information in your posting.  Maybe there is a queue in FXRuby that is
regularly read from the main thread and which you can use.  Actually
you need to be able to interfere with FXRuby's processing otherwise I
don't understand how you want to make option 1 work.

Btw, a quick Google revealed this at the top of the list:

http://www.fxruby.org/doc/differences.html#d0e5063

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/