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