> I tried both with "CLIENT=: 0" and there wasn't a hard crash but both
> seemed to freeze until they were done (w/o updating each other's windows).

Interesting behavior.

On my Mac both processes appear to work correctly, but as if the
sister process wasn't running.

Freezing is what I frequently encounter when using a hard-looping duty
cycle, which is why I always prefer to use a soft one. My original
version had a soft duty cycle, as in:

  http://www.jsoftware.com/jwiki/IanClark/YellowJ

but I replaced it with a hard loop because it complicated the demo: I
didn't think people would appreciate the reason for going to the extra
effort of having a soft duty cycle.

The verb: duty_cycle won't work in J7 as it stands, because of the use
of wd'timer'. But Eric showed in a recent thread how to replace it
with an ajax-based timed callback -- and that works just fine for me.

I now have all the components I need, in bits here and there. But
can't spend any more time on it for a few days. But over the weekend
I'll put it all together into a meaningful demo to post on the wiki.
It will demonstrate "are-you-alive" between two processes, a J7 server
and a J6 client running a jwd UI (...not just a curio: I do actually
have a use for that).

And with a bit of luck, I should have my Windows laptop back by then,
so I can test it.

On Mon, Jan 9, 2012 at 12:52 PM, Devon McCormick <devon...@gmail.com> wrote:
> I tried both with "CLIENT=: 0" and there wasn't a hard crash but both
> seemed to freeze until they were done (w/o updating each other's windows).
>
> On Mon, Jan 9, 2012 at 7:46 AM, Devon McCormick <devon...@gmail.com> wrote:
>
>> Actually, the first change I'd make would be to get rid of the "wd" stuff
>> since I almost only use jconsole these days.  This would also allow me to
>> test it in J7.
>>
>> On Mon, Jan 9, 2012 at 7:09 AM, Ian Clark <earthspo...@gmail.com> wrote:
>>
>>> That's great. Thanks for the information, Devon.
>>>
>>> I guess you spotted that the number after: start is the number of
>>> cycles you want it to do before stopping. If you want it to run
>>> forever:
>>>
>>>   start _
>>>
>>> Then you can start and stop the other process for limited periods, and
>>> watch the "die" and "resurrect" messages appear at will.
>>>
>>> I'm interested to know what happens under Windows if you run both
>>> processes with CLIENT=0 by mistake. The detection algorithm won't work
>>> of course, but since the two processes will then be asynchronously
>>> updating the mapped noun CTL0 -- with no locking (unless jmf provides
>>> it?) -- I'd guess there's a tiny chance of a hard crash?
>>>
>>> It's only a demo. In an operational app, with 3 or more processes,
>>> each process as it starts should maybe look for the first CTL<n>
>>> that's keeping a constant value, seize it and set CLIENT=n .
>>>
>>> ...Or you can ditch my simple scheme and use sockets. :)
>>>
>>> On Mon, Jan 9, 2012 at 5:17 AM, Devon McCormick <devon...@gmail.com>
>>> wrote:
>>> > It looks like it works OK: the "CLIENT=: 0" window gets its title bar
>>> > updated until the "CLIENT=: 1" session ends, then it reports
>>> > +---+-+------+------+--+
>>> > |die|0|778555|778553|88|
>>> > +---+-+------+------+--+
>>> > duty: end.
>>> >
>>> > On Sun, Jan 8, 2012 at 10:39 PM, Ian Clark <earthspo...@gmail.com>
>>> wrote:
>>> >
>>> >> aha... a word I've forgotten to include. Can you try adding this to
>>> >> the script please?...
>>> >>
>>> >> jmf=: ] , ('.jmf' (#~) ([: -. ('.' e. ])))
>>> >>
>>> >> (I've just fixed the script in the wiki.)
>>> >>
>>> >> On Mon, Jan 9, 2012 at 3:22 AM, Devon McCormick <devon...@gmail.com>
>>> >> wrote:
>>> >> > I get the following error attempting this under Windows XP:
>>> >> >
>>> >> >   start 10
>>> >> > duty: starts...
>>> >> > |value error: jmf
>>> >> > |   fi=.jpath'~temp/',    jmf tolower y
>>> >> >
>>> >> > On Sun, Jan 8, 2012 at 8:32 PM, Ian Clark <earthspo...@gmail.com>
>>> wrote:
>>> >> >
>>> >> >> Following Bill's warning, I've just corrected the downloadable
>>> script:
>>> >> >> alivedemo.ijs at:
>>> >> >>   http://www.jsoftware.com/jwiki/Scripts/AliveDemo
>>> >> >> The "server" now accesses its jmf file using map_jmf, but the client
>>> >> >> uses share_jmf_.
>>> >> >>
>>> >> >> Can somebody please verify it works under Windows and tell me? (I
>>> >> >> don't currently have a windows machine).
>>> >> >>
>>> >> >>
>>> >> >> On Sun, Jan 8, 2012 at 1:06 PM, Ian Clark <earthspo...@gmail.com>
>>> >> wrote:
>>> >> >> > I've just noticed that if IFUNIX then share_jmf_ calls map_jmf_
>>> to do
>>> >> >> > the job. But if IFUNIX=0 then the code for share and map are
>>> >> >> > different. Quite likely it won't work as it stands under Windows.
>>> The
>>> >> >> > workaround is for mapex to check the value of CLIENT and use
>>> map_jmf_
>>> >> >> > if CLIENT=0, else share_jmf_ .
>>> >> >> >
>>> >> >> > On Sun, Jan 8, 2012 at 7:17 AM, bill lam <bbill....@gmail.com>
>>> wrote:
>>> >> >> >> Ian,
>>> >> >> >>
>>> >> >> >> I have not study the source carefully, but at the first glance,
>>> it
>>> >> >> seemed
>>> >> >> >> that two running J processes accessing the same mapped file.  Why
>>> >> >> >> share_jmf_ was not needed?  Please correct me if I missed
>>> anything.
>>> >> >> >>
>>> >> >> >> Вск, 08 Янв 2012, Ian Clark писал(а):
>>> >> >> >>> This is my eventual solution to the "are you alive?" problem:
>>> >> >> >>>
>>> >> >> >>>    http://www.jsoftware.com/jwiki/Scripts/AliveDemo
>>> >> >> >>>
>>> >> >> >>> It doesn't use sockets, but a couple of mapped files instead.
>>> The
>>> >> >> >>> (identically coded) processes use them to play pat-a-cake.
>>> >> >> >>>
>>> >> >> >>> For demo simplicity I've coded a 'hard' duty cycle (a
>>> while.-loop.)
>>> >> >> >>> rather than one I find much more convenient: a "soft" duty cycle
>>> >> that
>>> >> >> >>> posts an event calling itself again after a given interval.
>>> >> >> >>>
>>> >> >> >>> A "soft" duty cycle has a lot of advantages. You have to play
>>> with
>>> >> the
>>> >> >> >>> alternatives to appreciate them, but the main ones are that it
>>> dies
>>> >> >> >>> gracefully if there's a code error, and it doesn't lock the
>>> session
>>> >> >> >>> window and any UI which the duty cycle happens to be managing.
>>> >> Indeed
>>> >> >> >>> the duty cycle runs in the background, keeping all displays
>>> >> up-to-date
>>> >> >> >>> and leaving you (almost) full use of J facilities.
>>> >> >> >>>
>>> >> >> >>> I'll place a "soft" duty cycle code sample on the wiki in a day
>>> or
>>> >> two.
>>> >> >> >>>
>>> >> >> >>> On Mon, Jan 2, 2012 at 6:51 PM, Ian Clark <
>>> earthspo...@gmail.com>
>>> >> >> wrote:
>>> >> >> >>> > Please forgive these questions I post to the list to which I
>>> know
>>> >> the
>>> >> >> >>> > answer. Or rather: *an* answer. I learn a lot from others'
>>> >> responses.
>>> >> >> >>> > Even if it's "my way is best after all" -- that's a valuable
>>> >> thing to
>>> >> >> >>> > know.
>>> >> >> >>> >
>>> >> >> >>> > I have two separate J processes running (assume Linux /
>>> Darwin,
>>> >> >> though
>>> >> >> >>> > I'm keen on cross-platform solutions). They communicate by
>>> each
>>> >> >> >>> > writing a text file which is read by the other
>>> >> >> >>> > (keep-it-simple-stupid). Is there a neat, robust way of one
>>> >> process
>>> >> >> >>> > asking the other: "are you there?" or "are you still alive?"
>>> >> >> >>> >
>>> >> >> >>> > I'm au-fait with how the yellow-J works, all the solutions
>>> >> involving
>>> >> >> >>> > timer-driven duty-cycles, timeouts, and reading files written
>>> by
>>> >> the
>>> >> >> >>> > sister process, Or the files' timestamps, or permissions. But
>>> >> these
>>> >> >> >>> > all seem so clunky. I guess what I want is something that was
>>> so
>>> >> easy
>>> >> >> >>> > in the 1970s but is so awkward on today's machines: just
>>> reserve a
>>> >> >> >>> > pair of bits in absolute memory -- or a pair of pixels on the
>>> >> screen
>>> >> >> >>> > -- or some inessential system flags -- and play pat-a-cake
>>> with
>>> >> them.
>>> >> >> >>> >
>>> >> >> >>> > Once upon a time there was such a thing as "common memory".
>>> >> >> >>>
>>> >> ----------------------------------------------------------------------
>>> >> >> >>> For information about J forums see
>>> >> http://www.jsoftware.com/forums.htm
>>> >> >> >>
>>> >> >> >> --
>>> >> >> >> regards,
>>> >> >> >> ====================================================
>>> >> >> >> GPG key 1024D/4434BAB3 2008-08-24
>>> >> >> >> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
>>> >> >> >>
>>> >> ----------------------------------------------------------------------
>>> >> >> >> For information about J forums see
>>> >> http://www.jsoftware.com/forums.htm
>>> >> >>
>>> ----------------------------------------------------------------------
>>> >> >> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Devon McCormick, CFA
>>> >> > ^me^ at acm.
>>> >> > org is my
>>> >> > preferred e-mail
>>> >> >
>>> ----------------------------------------------------------------------
>>> >> > For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >> ----------------------------------------------------------------------
>>> >> For information about J forums see http://www.jsoftware.com/forums.htm
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > Devon McCormick, CFA
>>> > ^me^ at acm.
>>> > org is my
>>> > preferred e-mail
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>
>>
>>
>>
>> --
>> Devon McCormick, CFA
>> ^me^ at acm.
>> org is my
>> preferred e-mail
>>
>>
>
>
> --
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to