in reply to wait is broken on win32?
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: wait is broken on win32?
by xiaoyafeng (Deacon) on Apr 26, 2009 at 04:35 UTC | |
by ikegami (Patriarch) on Apr 26, 2009 at 05:06 UTC | |
by xiaoyafeng (Deacon) on Apr 26, 2009 at 05:49 UTC |