File: 99threads.t

package info (click to toggle)
libkavorka-perl 0.039-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 696 kB
  • sloc: perl: 2,850; makefile: 6; sh: 6
file content (70 lines) | stat: -rw-r--r-- 1,213 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
=pod

=encoding utf-8

=head1 PURPOSE

Check that Kavorka can be used on threaded Perls. Doesn't test any
actual functionality under threading; merely that Kavorka can be
loaded, and threads can be created.

=head1 AUTHOR

Aaron James Trevena E<lt>teejay@cpan.orgE<gt>.

=head1 COPYRIGHT AND LICENCE

This software is copyright (c) 2014, 2017 by Aaron James Trevena.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut

use strict;
use warnings;
use Test::More;

use Config;
BEGIN {
	plan skip_all => "your perl does not support ithreads"
		unless $Config{useithreads};
};

use threads;

{
	package ThreadedExample;
	use Kavorka;
	use Moo;
	method foo {
		return { '$self' => $self, '@_' => \@_ };
	}
}

my $subref = sub {
	my $id = shift;
	note("id:$id");
	return $id;
};

my @threads;
my @idents = qw/bar1 bar2 bar3 bar4 bar5 bar6/;
foreach my $foo_id (@idents)
{
	push @threads, threads->create($subref, $foo_id);
}

my @results;
for my $thread (@threads) {
	note("joining thread $thread");
	push @results, $thread->join;
}

is_deeply(
	[ sort @results ],
	[ sort @idents ],
	'expected return values',
);

done_testing;