Geez. One copy and an indication of the 4 lines you had changed and how would have been more than enough!

The reason the modified code fails, is because it wasn't designed to be run in a loop, and you have made no changes to allow it to run in a loop.

The first problem, one of several, is that the our'd array @elevators is initialised in init_elevator() with the handles of the threads used to runs the elevators are pushed onto this array, but they are never removed. So on the second run, a second set of thread handles are push onto the array, and when finish() is called, it attempts to join to all the threads in the array, accept the handles for the first set are still there, but the associated thread are not. Then went away the first time finish() was called. So you are calling join on non-existant threads, so it blows up in your face.

It probably shouldn't blow up, but it is still programmer error. When you re-start the code, you need to ensure that all the globals, our vars, are re-set to ther initial state.

There are many other globals used. There are several other problems with the design of this program too. Not a great design, but it is meant as a demonstration of the concepts rather than working level code.


Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller



In reply to Re: Re: Re: Threads: Free to wrong pool by BrowserUk
in thread Threads: Free to wrong pool by P0w3rK!d

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.