Perl 6 for Concurrency and Parallel Computing
-
Upload
andysh -
Category
Technology
-
view
426 -
download
1
Transcript of Perl 6 for Concurrency and Parallel Computing
![Page 1: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/1.jpg)
Perl 6 for Concurrency and Parallel Computing
![Page 2: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/2.jpg)
or
![Page 3: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/3.jpg)
Parallel Features of Perl 6
![Page 4: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/4.jpg)
The Parallel Features of the Perl Six
![Page 5: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/5.jpg)
Parallel Futuresof Perl 6
![Page 6: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/6.jpg)
Foreword
![Page 7: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/7.jpg)
Interviews for Pragmatic Perl in 2013–2015
![Page 8: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/8.jpg)
![Page 9: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/9.jpg)
What is the most important feature of the programming languages in the future?
Q:
![Page 10: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/10.jpg)
I don’t knowA:
No idea (2 answers)
![Page 11: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/11.jpg)
There’s no good answerA:
No idea (2 answers)
![Page 12: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/12.jpg)
Natural-like languageA:
Syntax features (1/3)
![Page 13: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/13.jpg)
MinimalismA:
Syntax features (2/3)
![Page 14: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/14.jpg)
ExtendabilityA:
Syntax features (3/3)
![Page 15: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/15.jpg)
Flexible type castingA:
Object system (1/3)
![Page 16: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/16.jpg)
RobustnessA:
Object system (2/3)
![Page 17: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/17.jpg)
Built-in introspectionA:
Object system (3/3)
![Page 18: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/18.jpg)
JVM supportA:
Environment (1/4)
![Page 19: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/19.jpg)
Execution in a browserA:
Environment (2/4)
![Page 20: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/20.jpg)
Language inter-compatibilityA:
Environment (3/4)
![Page 21: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/21.jpg)
EmbeddingA:
Environment (4/4)
![Page 22: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/22.jpg)
CommunityA:
Humanity (1/8)
![Page 23: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/23.jpg)
HumanismA:
Humanity (2/8)
![Page 24: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/24.jpg)
Open sourceA:
Humanity (3/8)
![Page 25: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/25.jpg)
PragmatismA:
Humanity (4/8)
![Page 26: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/26.jpg)
Mind control (sic!)A:
Humanity (5/8)
![Page 27: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/27.jpg)
Expressing things easilyA:
Humanity (6/8)
![Page 28: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/28.jpg)
Domain orientedA:
Humanity (7/8)
![Page 29: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/29.jpg)
UnobtrusivenessA:
Humanity (8/8)
![Page 30: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/30.jpg)
Number 1 answer
Parallelism
![Page 31: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/31.jpg)
ParallelismA:
Parallelism (1/12)
![Page 32: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/32.jpg)
Working with parallel resources
A:
Parallelism (2/12)
![Page 33: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/33.jpg)
ParallelismA:
Parallelism (3/12)
![Page 34: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/34.jpg)
Good paralleling modelA:
Parallelism (4/12)
![Page 35: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/35.jpg)
Intuitive coroutines and multi-core support
A:
Parallelism (5/12)
![Page 36: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/36.jpg)
ParallelismA:
Parallelism (6/12)
![Page 37: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/37.jpg)
Safe operation parallelismA:
Parallelism (7/12)
![Page 38: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/38.jpg)
Built-in threadingA:
Parallelism (8/12)
![Page 39: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/39.jpg)
Qualitative abstract threadingA:
Parallelism (9/12)
![Page 40: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/40.jpg)
ParallelismA:
Parallelism (10/12)
![Page 41: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/41.jpg)
Good parallelismA:
Parallelism (11/12)
![Page 42: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/42.jpg)
Multi-taskingA:
Parallelism (12/12)
![Page 43: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/43.jpg)
Back to Perl 6
![Page 44: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/44.jpg)
The idea is keeping things
transparent
![Page 45: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/45.jpg)
A Perl 6 user simply uses concurrency
![Page 46: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/46.jpg)
A Perl 6 compiler makes it possible
![Page 47: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/47.jpg)
A Perl 6 compiler makes it possible
![Page 48: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/48.jpg)
The Perl 6 compiler makes it possible
![Page 49: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/49.jpg)
Running examples with Rakudo Star
![Page 50: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/50.jpg)
Running examples with Rakudo Star
on MoarVM
![Page 51: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/51.jpg)
Two kindsof parallel features
![Page 52: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/52.jpg)
Roughly, 1) implicit 2) explicit
![Page 53: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/53.jpg)
Operators at a glance
![Page 54: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/54.jpg)
1. Hyperops
![Page 55: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/55.jpg)
A hyper operator is a
meta operator
![Page 56: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/56.jpg)
+operator
![Page 57: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/57.jpg)
+=meta operator
![Page 58: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/58.jpg)
>>+<<hyper operator
![Page 59: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/59.jpg)
»+«hyper operator
![Page 60: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/60.jpg)
>>+hyper operator
![Page 61: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/61.jpg)
»+hyper operator
![Page 62: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/62.jpg)
>>+>>hyper operator
![Page 63: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/63.jpg)
<<+<<hyper operator
![Page 64: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/64.jpg)
«+«hyper operator
![Page 65: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/65.jpg)
![Page 66: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/66.jpg)
<<+>>hyper operator
![Page 67: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/67.jpg)
«+»hyper operator
![Page 68: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/68.jpg)
<<<>>hyper operator
![Page 69: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/69.jpg)
«<»hyper operator
![Page 70: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/70.jpg)
@c = @a >>+<< @b
![Page 71: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/71.jpg)
@c = @a >>+<< @b@c[0] = @a[0] + @b[0];
![Page 72: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/72.jpg)
@c = @a >>+<< @b@c[0] = @a[0] + @b[0];@c[1] = @a[1] + @b[1];
![Page 73: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/73.jpg)
@c = @a >>+<< @b@c[0] = @a[0] + @b[0];@c[1] = @a[1] + @b[1];@c[2] = @a[2] + @b[2];
![Page 74: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/74.jpg)
@c = @a >>+>> 1
![Page 75: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/75.jpg)
@c = @a >>+>> 1@c[0] = @a[0] + 1;
![Page 76: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/76.jpg)
@c = @a >>+>> 1@c[0] = @a[0] + 1;@c[1] = @a[1] + 1;
![Page 77: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/77.jpg)
@c = @a >>+>> 1@c[0] = @a[0] + 1;@c[1] = @a[1] + 1;@c[2] = @a[2] + 1;
![Page 78: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/78.jpg)
2. Junctions
![Page 79: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/79.jpg)
Or Quantum
Superpositions
![Page 80: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/80.jpg)
Many values as one
![Page 81: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/81.jpg)
my $j = 1 | 2 | 3 | 5;
![Page 82: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/82.jpg)
my $j = 1 | 2 | 3 | 5;
say 1 if 3 == $j;
![Page 83: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/83.jpg)
my $j = 1 | 2 | 3 | 5;
say 1 if 3 == $j;
![Page 84: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/84.jpg)
my $j = 1 | 2 | 3 | 5;
say 1 if 3 == $j;
![Page 85: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/85.jpg)
my $j = 1 | 2 | 3 | 5;
say 1 if 3 == $j;
}
![Page 86: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/86.jpg)
my $j = 1 | 2 | 3 | 5;
say 1 if 3 == $j;
}1
![Page 87: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/87.jpg)
3.Feeds
![Page 88: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/88.jpg)
my @a = 1..10;
![Page 89: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/89.jpg)
my @a = 1..10;@a ==> grep {$_ mod 2};
![Page 90: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/90.jpg)
my @a = 1..10;@a ==> grep {$_ mod 2};!
1 3 5 7 9
![Page 91: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/91.jpg)
my @a = 1..10;@a ==> grep {$_ mod 2} ==> map {$_ ** 2};
![Page 92: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/92.jpg)
my @a = 1..10;@a ==> grep {$_ mod 2} ==> map {$_ ** 2};!
1 9 25 49 81
![Page 93: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/93.jpg)
![Page 94: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/94.jpg)
4.Channels
![Page 95: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/95.jpg)
my $c = Channel.new;
![Page 96: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/96.jpg)
my $c = Channel.new;$c.send(42);
![Page 97: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/97.jpg)
my $c = Channel.new;$c.send(42);say $c.receive;!
42
![Page 98: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/98.jpg)
my $ch = Channel.new;
![Page 99: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/99.jpg)
my $ch = Channel.new;for <1 3 5 7 9> { $ch.send($_);}
![Page 100: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/100.jpg)
my $ch = Channel.new;for <1 3 5 7 9> { $ch.send($_);}while $ch.poll -> $x { say $x;}
![Page 101: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/101.jpg)
5.Promises
![Page 102: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/102.jpg)
my $p = Promise.new;
![Page 103: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/103.jpg)
my $p = Promise.new;say $p.status;
Planned
![Page 104: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/104.jpg)
my $p = Promise.new;$p.keep;
![Page 105: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/105.jpg)
my $p = Promise.new;$p.keep;say $p.status;!
Kept
![Page 106: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/106.jpg)
my $p = Promise.new;$p.break;
![Page 107: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/107.jpg)
my $p = Promise.new;$p.break;say $p.status;!
Broken
![Page 108: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/108.jpg)
Factory methods
![Page 109: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/109.jpg)
start
![Page 110: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/110.jpg)
my $p = start {42};
![Page 111: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/111.jpg)
my $p = start {42}; say $p.WHAT;
(Promise)
![Page 112: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/112.jpg)
my $p1 = start {sleep 2};
![Page 113: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/113.jpg)
my $p1 = start {sleep 2};my $p2 = start {sleep 2};
![Page 114: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/114.jpg)
my $p1 = start {sleep 2};say $p1.status;my $p2 = start {sleep 2};say $p2.status;
![Page 115: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/115.jpg)
my $p1 = start {sleep 2};say $p1.status;my $p2 = start {sleep 2};say $p2.status;!
PlannedPlanned
![Page 116: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/116.jpg)
my $p1 = start {sleep 2};my $p2 = start {sleep 2};sleep 3;
![Page 117: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/117.jpg)
my $p1 = start {sleep 2};my $p2 = start {sleep 2};sleep 3;say $p1.status;say $p2.status;
![Page 118: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/118.jpg)
my $p1 = start {sleep 2};my $p2 = start {sleep 2};sleep 3;say $p1.statussay $p2.statusKeptKept
![Page 119: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/119.jpg)
start in a thread
![Page 120: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/120.jpg)
in
![Page 121: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/121.jpg)
my $p = Promise.in(3);
![Page 122: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/122.jpg)
my $p = Promise.in(3);!
for 1..5 { say "$_ {$p.status}"; sleep 1;}
![Page 123: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/123.jpg)
my $p = Promise.in(3);!
for 1..5 { say "$_ {$p.status}"; sleep 1;}
![Page 124: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/124.jpg)
1 Planned
![Page 125: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/125.jpg)
1 Planned2 Planned
![Page 126: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/126.jpg)
1 Planned2 Planned3 Planned
![Page 127: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/127.jpg)
1 Planned2 Planned3 Planned4 Kept
![Page 128: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/128.jpg)
1 Planned2 Planned3 Planned4 Kept5 Kept
![Page 129: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/129.jpg)
Example:Sleep Sort
![Page 130: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/130.jpg)
!
for @*ARGS -> $a { !
!
!
!
}
![Page 131: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/131.jpg)
!
for @*ARGS -> $a { !
!
!
!
}
![Page 132: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/132.jpg)
!
for @*ARGS -> $a { @promises.push( Promise.in($a).then({ say $a; }) );}!
await(|@promises);
![Page 133: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/133.jpg)
my @promises;for @*ARGS -> $a { @promises.push( Promise.in($a).then({ say $a; }) );}!
await(|@promises);
![Page 134: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/134.jpg)
my @promises;for @*ARGS -> $a { @promises.push( Promise.in($a).then({ say $a; }) );}!
await(|@promises);
![Page 135: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/135.jpg)
my @promises;for @*ARGS -> $a { @promises.push( Promise.in($a).then({ say $a; }) );}!
await(|@promises);
![Page 136: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/136.jpg)
my @promises;for @*ARGS -> $a { @promises.push( Promise.in($a).then({ say $a; }) );}!
await(|@promises);
![Page 137: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/137.jpg)
$ ./sleep-sort.pl
![Page 138: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/138.jpg)
$ ./sleep-sort.pl 3 1 2
![Page 139: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/139.jpg)
$ ./sleep-sort.pl 3 1 21
![Page 140: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/140.jpg)
$ ./sleep-sort.pl 3 1 212
![Page 141: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/141.jpg)
$ ./sleep-sort.pl 3 1 2123
![Page 142: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/142.jpg)
Home work:Channels inside
Promises
![Page 143: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/143.jpg)
More:Schedulers
![Page 144: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/144.jpg)
More:Suppliers
![Page 145: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/145.jpg)
More:I/O and Suppliers
![Page 146: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/146.jpg)
More:Signals
![Page 147: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/147.jpg)
More:Threads
![Page 148: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/148.jpg)
More:Atomic
![Page 149: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/149.jpg)
More:Locks
![Page 150: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/150.jpg)
More:Semaphores
![Page 151: Perl 6 for Concurrency and Parallel Computing](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a61a3f1a28abc6098b469c/html5/thumbnails/151.jpg)
__END__