I hope it print 1 to 100 in turn
There's no reason to expect that.
Process 1 launches process 1.1 and prints 1
Process 1 launches process 1.2 and prints 2
Process 1 launches process 1.3 and prints 3
...
Independently,
Process 1.1 launches process 1.1.1 and prints 2
Process 1.1 launches process 1.1.2 and prints 3
Process 1.1 launches process 1.1.3 and prints 4
...
Independently,
Process 1.2 launches process 1.2.1 and prints 3
Process 1.2 launches process 1.2.2 and prints 4
Process 1.2 launches process 1.2.3 and prints 5
...
Independently,
Process 1.1.1 launches process 1.1.1.1 and prints 3
Process 1.1.1 launches process 1.1.1.2 and prints 4
Process 1.1.1 launches process 1.1.1.3 and prints 5
...
...
Aside from printing the same numbers more than once, there's no concurrency control to ensure they happen in order.
Are you re-inventing Parallel::ForkManager?
Eventually it print 'out of memory' and crash.
By my quick count, your code results in up to 56 processes (unix) or threads (Windows) executing simultaneously. That's not a small number.
So my question is whether my script could be reused on win32 by a little work or I have to totally rewrite it in thread?
You are already using threads. fork creates threads on Windows.
In reply to Re: wait is broken on win32?
by ikegami
in thread wait is broken on win32?
by xiaoyafeng
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |