In my case there are exactly zero filehandles. But every handle will face this same problem. At the end them are only references. And if a thread can't remember the value of this variable, it will reinitilize it.
There as many handles as threads. There should be no problem. I'm also able to open as many (and more) handles in a single script, without modperl. Here is my `ulimit -a`:
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 64000
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
I would also await an error message for something like that. But there is nothing.
This global vars should loose its value only under the condition the thread ends. A java developer pointed me to the garbagge colector, but at the moment my knowhow at this area is not at that level i would want it. (Never was thinking about garbagge collection while using perl)
Let's assume them are ending, why is there a little rest of threads allowed to keep living and holding their vars? (I mean it is a computer. I was thinking everything in it has to be deterministic, so someone has to delete this vars) |