in reply to Re^8: threads with shared variables across multiple instances of a module
in thread threads with shared variables across multiple instances of a module
Hm. This seems to be a platform specific problem--which OS are you running?--because your code (with one minor change), works for me:
C:\test>perl 831580.pl 1234 enter port: 1234 socket OK bind OK listen OK Server started at 192.168.1.31:1234 Server ready. Waiting for connections... got a connection from: 192.168.1.31:52479 IO::Socket::INET=GLOB(0x4d7c +110) list connect to this server: client: 192.168.1.31:52479 4 192.168.1.31:52479 fred 192.168.1.31:52479 bill 192.168.1.31:52479 test 192.168.1.31:52479 more 192.168.1.31:52479 still more from 192.168.1.31:52479: from 192.168.1.31:52479: from 192.168.1.31:52479: from 192.168.1.31:52479: from 192.168.1.31:52479: from 192.168.1.31:52479: hfrom 192.168.1.31:52479: efrom 192.168.1.31: +52479: lfrom 192.168.1.31:52479: lfrom 192.168.1.31:52479: ofrom 192. +168.1.31:52479:
I had to change 1 line:
while( my $tmp = <STDIN> ) { ##sysread(STDIN, $tmp, BUFSIZE) ) + {
because using sysread on STDIN means that no CRLF translation is done and so chomp doesn't do the right thing on my OS.
I strongly suspect that your thread is dying because you are calling die.
Try changing these two lines (remove the \n so that the line numbers are output), and then post your output:
open $client, "+<$fileno" || die "$!"; syswrite( $client, $msg_t ) || die ": +$!";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^10: threads with shared variables across multiple instances of a module
by zerg13new (Initiate) on Mar 30, 2010 at 15:57 UTC | |
|
Re^11: threads with shared variables across multiple instances of a module
by zerg13new (Initiate) on Apr 03, 2010 at 14:07 UTC |