Look at the module Thread::Cancel on CPAN. It provides the
capabilities you're looking for.
On Mon, Mar 24, 2008 at 7:24 PM, Javier Terceiro <[EMAIL PROTECTED]> wrote:
> Hello list,
>
> I am writing a daemon. I have a daemon that it check a folder and then
> throws both threads exist as files. It's well, the problem is that
> each thread need it ends at a certain time (defined by default). If
> this does not complete the work to be cancelled. For example, if it is
> making a connection to a website and it does not respond in 2 minutes,
> until the process completes and the thread too, running a particular
> code before.
>
> I was looking like doing and I did not find anything. Any thoughts on
> how to do that
>
> My source code is:
>
> #!/usr/bin/perl -w
>
> use strict;
> use warnings;
> use AnyData;
> use Sys::Syslog qw(:standard :macros);
> use POSIX qw(setsid);
> use threads;
> use threads::shared;
>
> sub mail
> {
> sleep(2);
> syslog LOG_INFO, "thread for mail";
> my $file_name = shift;
> ...
> # If you spent 2 min, canceled
> # source cancel
> syslog LOG_INFO, "Surpassed time";
>
> # else
> syslog LOG_INFO, "Process completed";
> }
>
> sub scan_files
> {
> my $DIR = "workq/";
> while(1)
> {
> opendir(DIRHANDLE, $DIR) || die "ERROR: $DIR not read\n";
> foreach (readdir(DIRHANDLE))
> {
> if (!-d $_)
> {
> threads->new(\&mail, $_);
> }
> }
> closedir DIRHANDLE;
> sleep(10);
> }
> }
> ...
> ...
> ...
>
> --
> A greeting,
>
> Javier.
>