in reply to Re: Re: Threads: Free to wrong pool
in thread Threads: Free to wrong pool

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


Replies are listed 'Best First'.
Re: Re: Re: Re: Threads: Free to wrong pool
by P0w3rK!d (Pilgrim) on Jun 07, 2003 at 00:32 UTC
    Sorry about the example. This is not my code. I wsa trying to use it as an example to figure out why my threads were crashing. Thanks for your efforts :)

      If you posted your code then you might get help.


      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