Thanks, Bill and Henry.  Using a non-JQt image reader seems to have done
the trick.
I will add this to my multi-threading notes.

On Tue, May 10, 2022 at 9:42 PM Henry Rich <henryhr...@gmail.com> wrote:

> read_image is not defined for me, nor is readimg_jqtide_.
>
> Henry Rich
>
>
>
> On 5/10/2022 8:13 PM, Devon McCormick wrote:
> > It's the "read_image_" line that seems to be where it hangs up for me, on
> > the fourth line from the end with the comment "¡Fails here!".
> > The invocation (for 5 threads) is:
> > mtFileWork t. '' MUTEX [ mtFileWork t. '' MUTEX [ mtFileWork t. '' MUTEX
> [
> > mtFileWork t. '' MUTEX [ mtFileWork t. '' MUTEX
> >
> > On Tue, May 10, 2022 at 6:22 PM Henry Rich <henryhr...@gmail.com> wrote:
> >
> >> What do I run to make it fail?
> >>
> >> Henry Rich
> >>
> >> On 5/10/2022 6:01 PM, Devon McCormick wrote:
> >>> Henry,
> >>> Here is the MVF - minimum viable failure.  It looks like the culprit is
> >>> "read_image" which is just a cover for "readimg_jqtide_".  I'm running
> >>> under jconsole.
> >>>
> >>> Set up in a directory with some .JPG files:
> >>>      FLS=: 0{"1 dir '*.jpg'
> >>>      createThreads 5
> >>>      MUTEX=: 10 T. 1    NB. Recursive mutex; either fails.
> >>>
> >>> mtFileWork=: 3 : 0
> >>>      tm=. 6!:1''
> >>>      while. 0<#FLS do.
> >>>          tn=. ":3 T. ''                   NB. Thread number as char
> >>>          varnm=. ' '-.~'threadVar',tn
> >>>          smoutput 'Thread ',tn,' locking at ',":qts''
> >>>          11 T. y
> >>>          smoutput 'Thread ',tn,' locked at ',":qts''
> >>>          (varnm,' FLS')=: split FLS
> >>>          smoutput 'Thread ',tn,' unlocking at ',(":qts''),' for file
> >> ',flnm=.
> >>>> ".varnm
> >>>          13 T. y
> >>>          smoutput 'Thread ',tn,' unlocked at ',":qts''
> >>>          #read_image flnm   NB. ¡Fails here!
> >>>       end.
> >>>       tm=. tm,~6!:1''
> >>> NB.EG mtFileWork t. '' MUTEX [ mtFileWork t. '' MUTEX [ mtFileWork t.
> ''
> >>> MUTEX [ mtFileWork t. '' MUTEX [ mtFileWork t. '' MUTEX
> >>> )
> >>>
> >>> Any help is appreciated!
> >>>
> >>> Thanks,
> >>>
> >>> Devon
> >>>
> >>> On Tue, May 10, 2022 at 4:46 PM Henry Rich <henryhr...@gmail.com>
> wrote:
> >>>
> >>>> If you can get me a version that fails on Windows I'll look at it.
> >>>>
> >>>> Henry Rich
> >>>>
> >>>> On 5/10/2022 4:20 PM, Devon McCormick wrote:
> >>>>> Hi,
> >>>>>
> >>>>> Has anyone had success using the multi-threading mutex primitives?
> >> I've
> >>>>> had limited success - I'll be presenting some basic routines at
> NYCJUG
> >>>> this
> >>>>> evening (18:00 EDT -
> >>>>> https://www.meetup.com/J-Dynamic-Functional-Programming/) - but have
> >>>> been
> >>>>> unable to run multiple threads on a real-life process without
> crashing
> >> J.
> >>>>> The following simplified demo seems to work OK but the version of
> this
> >>>>> where I do actual work crashes - with "Process shell<1> exited
> >> abnormally
> >>>>> with code 5" -  after two to thirty repetitions.
> >>>>>
> >>>>>       MUTEX=: 10 T. 0    NB. Fast mutex
> >>>>>       createThreads=: 3 : '{{ 0 T. '''' }} ^:y]'''''
> >>>>>       qts=: 6!:0
> >>>>>       createThreads 5
> >>>>>       GVAR=: 100?@$1e6                    NB. Initialize global
> threads
> >>>> will
> >>>>> consume
> >>>>>
> >>>>> multiLockMsgUnlock=: 3 : 0
> >>>>>       while. 0<#GVAR do.
> >>>>>           tn=. ":3 T. ''                   NB. Thread number as char
> >>>>>           varnm=: ' '-.~'threadVar',tn
> >>>>>           smoutput 'Thread ',tn,' locking at ',":qts''
> >>>>>           11 T. y
> >>>>>           smoutput 'Thread ',tn,' locked at ',":qts''
> >>>>>           (varnm,' GVAR')=: split GVAR
> >>>>>           smoutput 'Thread ',tn,' unlocking at ',(":qts''),' with
> >>>>> ',tn,'=',":".varnm
> >>>>>           13 T. y
> >>>>>           smoutput 'Thread ',tn,' unlocked at ',(":qts''),';
> >>>> #GVAR=',":#GVAR
> >>>>>        end.
> >>>>> )
> >>>>> NB. Start five processes (one line):
> >>>>> multiLockMsgUnlock t. '' MUTEX [ multiLockMsgUnlock t. '' MUTEX [
> >>>>> multiLockMsgUnlock t. '' MUTEX [ multiLockMsgUnlock t. '' MUTEX [
> >>>>> multiLockMsgUnlock t. '' MUTEX
> >>>>>
> >>>>> The actual work I'm doing is on files, a list of whose names
> >> corresponds
> >>>> to
> >>>>> the GVAR vector above.
> >>>>>
> >>>>> Any suggestions are welcome.
> >>>>>
> >>>>> Cheers,
> >>>>>
> >>>>> Devon
> >>>>>
> >>>> --
> >>>> This email has been checked for viruses by AVG.
> >>>> https://www.avg.com
> >>>>
> >>>> ----------------------------------------------------------------------
> >>>> For information about J forums see
> http://www.jsoftware.com/forums.htm
> >>>>
> >>
> >> --
> >> This email has been checked for viruses by AVG.
> >> https://www.avg.com
> >>
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> >
>
>
> --
> This email has been checked for viruses by AVG.
> https://www.avg.com
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>


-- 

Devon McCormick, CFA

Quantitative Consultant
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to