File Coverage

blib/lib/Pipeline/Segment/Async/IThreads.pm
Criterion Covered Total %
statement 22 39 56.4
branch 1 4 25.0
condition n/a
subroutine 8 12 66.6
pod 4 5 80.0
total 35 60 58.3


line stmt bran cond sub pod time code
1             package Pipeline::Segment::Async::IThreads;
2              
3 1     1   7 use strict;
  1         3  
  1         35  
4 1     1   6 use warnings;
  1         95  
  1         47  
5             our $VERSION = "3.12";
6              
7             BEGIN {
8 1     1   5 use Config;
  1         1  
  1         82  
9 1 50   1   13 if ($Config{useithreads}) {
10 0         0 $Pipeline::Segment::Async::IThreads::AVAILABLE = 1;
11 0         0 require threads;
12 0         0 threads->import;
13             } else {
14 1         22 $Pipeline::Segment::Async::IThreads::AVAILABLE = 0;
15             }
16             }
17              
18 1     1   5 use Config;
  1         1  
  1         20  
19 1     1   4 use Pipeline::Segment::Async::Handler;
  1         2  
  1         24  
20 1     1   4 use base qw( Pipeline::Segment::Async::Handler );
  1         2  
  1         226  
21              
22             sub canop {
23 1     1 1 2 my $self = shift;
24 1         4 $Pipeline::Segment::Async::IThreads::AVAILABLE
25             }
26              
27             sub run {
28 0     0 1   my $self = shift;
29 0           my $sub = shift;
30 0           my @args = @_;
31 0           $self->thread( threads->create( $sub, @args ) );
32             }
33              
34             sub thread {
35 0     0 0   my $self = shift;
36 0           my $thread = shift;
37 0 0         if (defined( $thread )) {
38 0           $self->{ thread } = $thread;
39 0           return $self;
40             } else {
41 0           return $self->{ thread };
42             }
43             }
44              
45             sub reattach {
46 0     0 1   my $self = shift;
47 0           return $self->thread->join();
48             }
49              
50             sub discard {
51 0     0 1   my $self = shift;
52 0           $self->thread->detach();
53             }
54              
55             1;
56              
57             __END__