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

Reply via email to