I've had some limited success with threads & LWP. The old signals and threads issue pops up. Setting sig pipe to ignore will stop your program from exiting when I socket is disconnected on you but you can't implement any kind of timeout on connections.
Good Luck. -J -- On Wed, 29 Jan 2003, Victor A. Prylipko wrote: > Hi, All ! > > Is ot possible to use threads and LWP modules together ? > > I tried to run simple programm: > =================================================== > #!/usr/bin/perl5 > use LWP::UserAgent; > use threads; > > my $ua = LWP::UserAgent->new; > $req = HTTP::Request->new(GET => 'http://www.liniya.ru/robots.txt'); > $res = $ua->request($req); > print $res->as_string; > $thr = threads->new(\&sub1, "Param 1"); > $thr->join; > > sub sub1 { > my (@InboundParameters) = @_; > print "In the thread\n"; > print "got parameters >", join("<>", @InboundParameters), "<\n"; > }; > =================================================== > > > Result is unexpected: > =================================================== > HTTP/1.1 200 OK > Connection: close > Date: Wed, 29 Jan 2003 09:17:45 GMT > Server: Apache/1.3.27 (Unix) PHP/4.1.2 mod_ssl/2.8.12 OpenSSL/0.9.6e > Content-Type: text/html; charset=windows-1251 > Client-Date: Wed, 29 Jan 2003 09:17:45 GMT > Client-Peer: 195.34.31.254:80 > Client-Response-Num: 1 > Client-Transfer-Encoding: chunked > > > User-Agent: * > Disallow: /Cat/E/ > Disallow: /Domen/ > > > Bizarre SvTYPE [32] at ./ctest2 line 9. > Segmentation fault (core dumped) > =================================================== > > > But when I comment lines > $res = $ua->request($req); > print $res->as_string; > > I got expected result: > > =================================================== > In the thread > got parameters >Param 1< > =================================================== > > My system: > FreeBSD 4.7-STABLE #1: Sun Jan 12 12:26:39 MSK 2003 > > Result of /usr/bin/perl5 -V > =================================================== > Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration: > Platform: > osname=freebsd, osvers=4.7-stable, archname=i386-freebsd-thread-multi > uname='freebsd gw.lini-a.ru 4.7-stable freebsd 4.7-stable #1: sun jan 12 > 12:26:39 msk 2003 [EMAIL PROTECTED]:sourceusrobjsourceusrsrcsysgw i386 ' > config_args='-Dusethreads' > hint=recommended, useposix=true, d_sigaction=define > usethreads=define use5005threads=undef useithreads=define > usemultiplicity=define > useperlio=define d_sfio=undef uselargefiles=define usesocks=undef > use64bitint=undef use64bitall=undef uselongdouble=undef > usemymalloc=n, bincompat5005=undef > Compiler: > cc='cc', ccflags > ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -I/usr/local/in > clude', > optimize='-O', > > > > > cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -I/usr/ > local/include' > ccversion='', gccversion='2.95.4 20020320 [FreeBSD]', gccosandvers='' > intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 > d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 > ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', > lseeksize=8 > alignbytes=4, prototype=define > Linker and Libraries: > ld='cc', ldflags ='-pthread -Wl,-E -L/usr/local/lib' > libpth=/usr/lib /usr/local/lib > libs=-lgdbm -lm -lc_r -lcrypt -lutil > perllibs=-lm -lc_r -lcrypt -lutil > libc=, so=so, useshrplib=false, libperl=libperl.a > gnulibc_version='' > Dynamic Linking: > dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' > cccdlflags='-DPIC -fpic', lddlflags='-shared -L/usr/local/lib' > > > Characteristics of this binary (from libperl): > Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES > PERL_IMPLICIT_CONTEXT > Built under freebsd > Compiled at Jan 28 2003 18:38:33 > @INC: > /usr/local/lib/perl5/5.8.0/i386-freebsd-thread-multi > /usr/local/lib/perl5/5.8.0 > /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd-thread-multi > /usr/local/lib/perl5/site_perl/5.8.0 > /usr/local/lib/perl5/site_perl/5.6.1 > /usr/local/lib/perl5/site_perl/5.005 > /usr/local/lib/perl5/site_perl > . > =================================================== > > > >
