Re: thred's pids
[email protected] (Elizabeth Mattijsen)
| Newsgroups | perl.ithreads |
|---|---|
| Message-ID | <f06110414bdafa4989eb2@[192.168.56.3]> |
At 11:08 AM +0200 11/4/04, Mihai Vlad wrote: >David Greaves wrote: >>Mihai Vlad wrote: >>>none of these return the actupa pid of the thread:( (or at least i >>>can't interpret it) >>> >>>here-s what i get: >>> >>>threads=SCALAR(0x81733b4)=SCALAR(0x8173390) >>>135846736 >>>1 >>> >>>when these threds were running ps ax gave me these: >>>25234 pts/4 S+ 0:00 /usr/bin/perl ./test >>>25235 pts/4 S+ 0:00 /usr/bin/perl ./test >>>25236 pts/4 S+ 0:00 /usr/bin/perl ./test >>> >>>I'm interested in the number 25236 wich i'm sure is the pid to my >>>opened thred , how can i get this number just using perl and it's >>>modules? :( i've tryied like anything.... now i'm trying to see >>>the code in how a thread is created perhaps there is something >>>there, if you know already or know a better way pls tell me. >>>10x >> >> >>OK >>That's what I expect. The tid of your thread ($thr1) is 1. >> >>25235 that's beyond my knowledge level :) >> >>From reading the docs, I'm pretty sure that you're not supposed to >>look at it - it's implementation specific. >>I'd expect some systems not to have a per-thread OS-level pid - >>indeed linux may not in the future. >> >>Why do you need to? >> >>Are you wanting to use signals? In which case set the signal >>handler in the thread and signal() the master PID. >>See if that works. >>I'd expect it to be threadsafe given the docs caveat: >>If your Perl has been built with PERL_OLD_SIGNALS (one has to >>explicitly add that symbol to ccflags, see |perl -V|), signal >>handling is not threadsafe. >> >>David >> >> >No, i have a test script written in perl, that starts over 1000 threads With regards to resource usage of 1000 threads, you might want to check my article about that on Perl Monks: http://perlmonks.org/index.pl?node_id=288022 > that read/write on a specific socket , every thread logs it's >actions on a single file called threadTID.log. Sometimes some of the >threads don't close (the script is safely made: i mean no write or >read is left unlogged or unsupervised, if a single write failes the >thread is killed) so i'm suspecting that the program i'm testing is >to blame for. >Now it would be very easy to identify the logs of the hanging >threads if they would be something like thrPID.log. > >Of course i've implemented a more simple solution like: writing >something at the end of a log when the thread closes:P and by this >way making it easy for my to identify the remaining threads logs. >But i was curious if i could find the threads pid and implemente >like i've written above for future knolledge, and scripts:). I know >that threads written in C and other languages know their pids, so >i'm really curious if i can find this in perl... > >Regarding the signals i am aware of the %SIG hash. From the documentation of my Thread::Signal module on CPAN: http://search.cpan.org/~elizabeth/Thread-Signal-1.11/lib/Thread/Signal.pm ===================================================================== SYSTEMS IT DOESN'T WORK ON Check the output of: perl -V:cppflags The absence of the string -DTHREADS_HAVE_PIDS is a good indication that Thread::Signal will most certainly not work. However, if that string does occur, it is no guarantee that Thread::Signal will work. The only way to find out is to run the test-suite and see whether that works. ===================================================================== You might also want to check the Caveats section. Liz