WEBVTT

1
00:00:05.100 --> 00:00:11.600
<00:00:05.100>It <00:00:06.500>hey,

2
00:00:09.600 --> 00:00:12.700
<00:00:09.600>hello, <00:00:11.000>everyone.

3
00:00:13.900 --> 00:00:16.400
<00:00:13.900>My <00:00:14.133>name <00:00:14.366>is <00:00:14.600>Lang <00:00:14.833>and <00:00:15.066>I <00:00:15.300>would

4
00:00:16.400 --> 00:00:19.100
<00:00:16.400>like <00:00:16.527>to <00:00:16.654>talk <00:00:16.781>to <00:00:16.909>you <00:00:17.036>about <00:00:17.163>topic <00:00:17.290>that <00:00:17.418>I'm <00:00:17.545>really <00:00:17.672>interested <00:00:17.799>in.

5
00:00:19.900 --> 00:00:22.600
<00:00:19.900>I <00:00:20.133>work <00:00:20.366>for <00:00:20.599>online <00:00:20.833>Solutions <00:00:21.066>which <00:00:21.299>helps

6
00:00:22.600 --> 00:00:25.200
<00:00:22.600>International <00:00:22.800>companies <00:00:23.000>to <00:00:23.200>build <00:00:23.400>their <00:00:23.600>Tech <00:00:23.800>teams <00:00:24.000>in

7
00:00:25.200 --> 00:00:25.800
Poland.

8
00:00:27.200 --> 00:00:30.500
<00:00:27.200>I <00:00:27.355>wrote <00:00:27.511>a <00:00:27.666>book <00:00:27.822>currently <00:00:27.977>is <00:00:28.133>only <00:00:28.288>in <00:00:28.444>Polish. <00:00:28.599>I

9
00:00:30.500 --> 00:00:33.900
<00:00:30.500>hope <00:00:30.655>I <00:00:30.811>will <00:00:30.966>change <00:00:31.122>it <00:00:31.277>in <00:00:31.433>the <00:00:31.588>future <00:00:31.744>to <00:00:31.900>expand

10
00:00:33.900 --> 00:00:36.600
<00:00:33.900>to <00:00:34.366>everyone <00:00:34.833>could <00:00:35.300>so

11
00:00:36.600 --> 00:00:38.200
<00:00:36.600>everyone <00:00:36.950>could <00:00:37.300>read <00:00:37.650>about <00:00:38.000>it.

12
00:00:39.600 --> 00:00:42.600
<00:00:39.600>I <00:00:39.950>split <00:00:40.300>the <00:00:40.650>presentation <00:00:41.000>in

13
00:00:42.600 --> 00:00:43.800
<00:00:42.600>two <00:00:42.960>parts, <00:00:43.320>of <00:00:43.680>course.

14
00:00:45.300 --> 00:00:46.600
<00:00:45.300>Let's <00:00:45.690>start <00:00:46.080>with <00:00:46.470>multifredding.

15
00:00:47.700 --> 00:00:51.100
<00:00:47.700>multifreading <00:00:47.980>helps <00:00:48.260>us <00:00:48.540>with <00:00:48.820>CPU <00:00:49.100>intensive

16
00:00:50.100 --> 00:00:51.200
work

17
00:00:51.900 --> 00:00:54.800
<00:00:51.900>So <00:00:52.074>for <00:00:52.250>example, <00:00:52.425>if <00:00:52.600>you <00:00:52.775>want <00:00:52.949>to <00:00:53.125>if <00:00:53.300>you

18
00:00:54.800 --> 00:00:58.000
<00:00:54.800>create <00:00:54.974>the <00:00:55.150>text <00:00:55.324>editor <00:00:55.500>and <00:00:55.675>you <00:00:55.849>want <00:00:56.025>to <00:00:56.199>do

19
00:00:57.100 --> 00:01:00.300
<00:00:57.100>some <00:00:57.275>grammar <00:00:57.450>checks <00:00:57.625>in <00:00:57.800>the <00:00:57.975>background <00:00:58.150>or <00:00:58.325>you <00:00:58.500>have

20
00:01:00.300 --> 00:01:01.200
<00:01:00.300>some <00:01:00.705>heavy <00:01:01.110>calculations.

21
00:01:02.100 --> 00:01:03.500
<00:01:02.100>You <00:01:02.415>can <00:01:02.730>use <00:01:03.045>multiple <00:01:03.360>threading.

22
00:01:05.700 --> 00:01:10.000
<00:01:05.700>in <00:01:06.050>standard <00:01:06.400>standard <00:01:06.750>program <00:01:07.100>we

23
00:01:09.200 --> 00:01:12.600
<00:01:09.200>use <00:01:09.480>only <00:01:09.760>single <00:01:10.040>threat <00:01:10.320>main <00:01:10.600>thread

24
00:01:13.400 --> 00:01:17.200
<00:01:13.400>And <00:01:13.750>the <00:01:14.100>operations <00:01:14.450>are <00:01:14.800>starting

25
00:01:16.200 --> 00:01:19.700
<00:01:16.200>when <00:01:16.480>the <00:01:16.760>previous <00:01:17.040>one <00:01:17.320>will <00:01:17.600>finish

26
00:01:19.700 --> 00:01:20.700
<00:01:19.700>so <00:01:20.150>it's <00:01:20.600>simple.

27
00:01:22.300 --> 00:01:25.400
<00:01:22.300>But <00:01:22.475>we <00:01:22.649>could <00:01:22.825>add <00:01:23.000>threads <00:01:23.175>and <00:01:23.350>then <00:01:23.524>we <00:01:23.700>will

28
00:01:25.400 --> 00:01:29.000
<00:01:25.400>be <00:01:25.750>able <00:01:26.100>to <00:01:26.450>move <00:01:26.800>some

29
00:01:28.600 --> 00:01:32.200
<00:01:28.600>background <00:01:28.833>work <00:01:29.066>or <00:01:29.300>some <00:01:29.533>very <00:01:29.766>intensive <00:01:30.000>calculations

30
00:01:31.200 --> 00:01:34.700
<00:01:31.200>to <00:01:31.666>other <00:01:32.133>threats <00:01:32.600>and

31
00:01:34.700 --> 00:01:36.200
<00:01:34.700>do <00:01:35.150>very <00:01:35.600>interesting <00:01:36.050>things.

32
00:01:38.300 --> 00:01:41.500
<00:01:38.300>And <00:01:38.580>there <00:01:38.860>are <00:01:39.140>two <00:01:39.420>sites <00:01:39.700>of

33
00:01:41.500 --> 00:01:44.000
<00:01:41.500>threading <00:01:41.780>there <00:01:42.060>are <00:01:42.340>physical <00:01:42.620>and <00:01:42.900>logical.

34
00:01:44.800 --> 00:01:47.600
<00:01:44.800>And <00:01:45.033>both <00:01:45.266>have <00:01:45.500>Frets <00:01:45.733>but <00:01:45.966>there <00:01:46.200>are

35
00:01:47.600 --> 00:01:48.000
different.

36
00:01:48.900 --> 00:01:51.800
<00:01:48.900>The <00:01:49.180>physical <00:01:49.460>threats <00:01:49.740>are <00:01:50.020>the <00:01:50.300>workers.

37
00:01:51.800 --> 00:01:53.300
<00:01:51.800>They <00:01:52.137>actually <00:01:52.475>do <00:01:52.812>the <00:01:53.149>work.

38
00:01:54.200 --> 00:01:57.200
<00:01:54.200>And <00:01:54.400>we <00:01:54.600>have <00:01:54.800>limited <00:01:55.000>amount <00:01:55.200>in <00:01:55.400>our <00:01:55.600>CPU.

39
00:01:58.200 --> 00:02:01.200
<00:01:58.200>And <00:01:58.340>we <00:01:58.480>have <00:01:58.620>logical <00:01:58.760>threats. <00:01:58.900>That's <00:01:59.040>the <00:01:59.180>work. <00:01:59.320>We <00:01:59.460>want <00:01:59.600>to

40
00:02:01.200 --> 00:02:04.500
<00:02:01.200>war <00:02:01.400>or <00:02:01.600>work. <00:02:01.800>We <00:02:02.000>want <00:02:02.200>to <00:02:02.400>in <00:02:02.600>the

41
00:02:04.500 --> 00:02:05.000
<00:02:04.500>workers <00:02:04.725>to <00:02:04.950>do.

42
00:02:06.100 --> 00:02:08.500
<00:02:06.100>So <00:02:06.333>let's <00:02:06.566>imagine <00:02:06.800>that <00:02:07.033>we <00:02:07.266>have <00:02:07.500>some.

43
00:02:10.100 --> 00:02:13.200
<00:02:10.100>Very <00:02:10.566>complicated <00:02:11.033>calculation <00:02:11.500>that

44
00:02:13.200 --> 00:02:16.300
<00:02:13.200>is <00:02:13.549>CPU <00:02:13.899>intensive <00:02:14.250>and <00:02:14.600>want

45
00:02:16.300 --> 00:02:19.000
<00:02:16.300>to <00:02:16.533>move <00:02:16.766>it <00:02:17.000>to <00:02:17.233>the <00:02:17.466>background <00:02:17.700>threat.

46
00:02:21.200 --> 00:02:24.500
<00:02:21.200>The <00:02:21.480>most <00:02:21.760>simple <00:02:22.040>way <00:02:22.320>is <00:02:22.600>to

47
00:02:24.500 --> 00:02:26.300
<00:02:24.500>just <00:02:24.780>new <00:02:25.060>up <00:02:25.340>the <00:02:25.620>threat <00:02:25.900>itself.

48
00:02:27.200 --> 00:02:30.800
<00:02:27.200>We <00:02:27.480>can <00:02:27.760>pass <00:02:28.040>the <00:02:28.320>the <00:02:28.600>Callback

49
00:02:30.800 --> 00:02:34.000
<00:02:30.800>to <00:02:31.080>it <00:02:31.360>and <00:02:31.640>just <00:02:31.920>start <00:02:32.200>it's

50
00:02:33.900 --> 00:02:35.400
<00:02:33.900>simple <00:02:34.575>way <00:02:35.250>but

51
00:02:36.300 --> 00:02:39.100
<00:02:36.300>the <00:02:36.500>problem <00:02:36.700>is <00:02:36.900>that <00:02:37.100>creative <00:02:37.300>threats <00:02:37.500>is <00:02:37.700>not

52
00:02:39.100 --> 00:02:40.200
<00:02:39.100>free <00:02:40.089>and

53
00:02:42.300 --> 00:02:46.500
<00:02:42.300>you <00:02:42.580>need <00:02:42.860>to <00:02:43.140>manage <00:02:43.420>those <00:02:43.700>threats

54
00:02:46.500 --> 00:02:46.800
yourself.

55
00:02:49.200 --> 00:02:52.400
<00:02:49.200>You <00:02:49.433>create <00:02:49.666>more <00:02:49.899>The <00:02:50.133>Logical <00:02:50.366>threats <00:02:50.600>than

56
00:02:52.400 --> 00:02:53.300
<00:02:52.400>you <00:02:52.805>have <00:02:53.210>physical.

57
00:02:54.100 --> 00:02:57.500
<00:02:54.100>And <00:02:54.299>then <00:02:54.500>the <00:02:54.700>physical <00:02:54.900>threats <00:02:55.100>will <00:02:55.299>look <00:02:55.500>something

58
00:02:57.500 --> 00:02:58.000
<00:02:57.500>like <00:02:57.950>this.

59
00:02:59.800 --> 00:03:00.100
Yeah.

60
00:03:05.700 --> 00:03:07.900
<00:03:05.700>Oh, <00:03:06.166>it <00:03:06.633>didn't <00:03:07.100>refresh.

61
00:03:10.500 --> 00:03:10.700
Yeah.

62
00:03:11.500 --> 00:03:13.100
<00:03:11.500>And <00:03:11.780>they <00:03:12.060>look <00:03:12.340>something <00:03:12.620>like <00:03:12.900>this.

63
00:03:14.700 --> 00:03:16.300
<00:03:14.700>We <00:03:15.399>have <00:03:16.100>also.

64
00:03:17.700 --> 00:03:19.100
<00:03:17.700>Oh, <00:03:17.952>no, <00:03:18.203>it's <00:03:18.456>our <00:03:18.708>first <00:03:18.959>okay.

65
00:03:20.000 --> 00:03:21.200
so

66
00:03:22.400 --> 00:03:23.900
<00:03:22.400>they <00:03:22.670>will <00:03:22.940>look <00:03:23.210>something <00:03:23.480>like <00:03:23.750>this.

67
00:03:25.300 --> 00:03:28.000
<00:03:25.300>And <00:03:25.533>that's <00:03:25.766>why <00:03:26.000>because <00:03:26.233>that <00:03:26.466>is <00:03:26.700>because

68
00:03:28.800 --> 00:03:31.600
<00:03:28.800>they <00:03:28.955>would <00:03:29.111>need <00:03:29.266>to <00:03:29.422>switch <00:03:29.577>between <00:03:29.733>tasks <00:03:29.888>and <00:03:30.044>switching <00:03:30.200>between

69
00:03:31.600 --> 00:03:34.400
<00:03:31.600>tasks <00:03:31.950>is <00:03:32.299>expensive. <00:03:32.650>We <00:03:33.000>need

70
00:03:34.400 --> 00:03:39.200
<00:03:34.400>to <00:03:34.633>completely <00:03:34.866>save <00:03:35.100>the <00:03:35.333>state <00:03:35.566>and <00:03:35.800>load

71
00:03:37.200 --> 00:03:40.900
<00:03:37.200>the <00:03:37.899>other <00:03:38.600>states.

72
00:03:40.900 --> 00:03:42.700
<00:03:40.900>So <00:03:41.250>it's <00:03:41.600>it's <00:03:41.950>tax <00:03:42.300>time.

73
00:03:44.600 --> 00:03:47.300
<00:03:44.600>So <00:03:44.833>that's <00:03:45.066>rule <00:03:45.299>number <00:03:45.533>one <00:03:45.766>is <00:03:46.000>to

74
00:03:47.300 --> 00:03:50.000
<00:03:47.300>try <00:03:47.580>to <00:03:47.860>limit <00:03:48.140>the <00:03:48.420>amount <00:03:48.700>of

75
00:03:50.600 --> 00:03:54.000
<00:03:50.600>logical <00:03:50.775>threats <00:03:50.950>to <00:03:51.125>be <00:03:51.299>not <00:03:51.475>more <00:03:51.650>than <00:03:51.825>physical <00:03:52.000>threats.

76
00:03:55.400 --> 00:03:59.000
<00:03:55.400>It's <00:03:55.555>completely <00:03:55.711>it <00:03:55.866>could <00:03:56.022>be <00:03:56.177>complicated <00:03:56.333>in <00:03:56.488>big <00:03:56.644>applications. <00:03:56.800>So

77
00:04:01.300 --> 00:04:03.900
<00:04:01.300>Fortunately <00:04:01.533>we <00:04:01.766>have <00:04:02.000>in <00:04:02.233>dotnet <00:04:02.466>fret <00:04:02.700>pull.

78
00:04:04.500 --> 00:04:07.500
<00:04:04.500>Fretful <00:04:04.780>will <00:04:05.060>manage <00:04:05.340>Frets <00:04:05.620>for <00:04:05.900>us.

79
00:04:08.700 --> 00:04:12.000
<00:04:08.700>So <00:04:08.933>yeah, <00:04:09.166>that's <00:04:09.399>how <00:04:09.633>you <00:04:09.866>you <00:04:10.100>can

80
00:04:11.900 --> 00:04:14.800
<00:04:11.900>cue <00:04:12.180>with <00:04:12.460>the <00:04:12.740>work <00:04:13.020>but <00:04:13.300>directly

81
00:04:14.800 --> 00:04:15.800
<00:04:14.800>on <00:04:15.100>the <00:04:15.400>Fret <00:04:15.700>pull.

82
00:04:16.900 --> 00:04:19.300
<00:04:16.899>However, <00:04:17.075>there <00:04:17.250>are <00:04:17.424>still <00:04:17.599>some <00:04:17.774>things <00:04:17.950>you <00:04:18.125>can <00:04:18.299>do.

83
00:04:20.600 --> 00:04:22.300
<00:04:20.600>With <00:04:21.066>this <00:04:21.533>this <00:04:22.000>syntax.

84
00:04:23.100 --> 00:04:26.000
<00:04:23.100>You <00:04:23.380>can't <00:04:23.660>easily <00:04:23.940>return <00:04:24.220>the <00:04:24.500>value.

85
00:04:26.800 --> 00:04:29.600
<00:04:26.800>Of <00:04:26.975>the <00:04:27.150>calculations, <00:04:27.325>but <00:04:27.500>it <00:04:27.675>would <00:04:27.850>be <00:04:28.025>cool <00:04:28.200>rights.

86
00:04:30.100 --> 00:04:30.400
so

87
00:04:31.100 --> 00:04:32.800
<00:04:31.100>Mmm, <00:04:31.566>here <00:04:32.033>we <00:04:32.500>have.

88
00:04:33.700 --> 00:04:36.400
<00:04:33.700>our <00:04:34.400>beloved <00:04:35.099>calculation

89
00:04:37.300 --> 00:04:37.900
<00:04:37.300>and <00:04:37.570>we <00:04:37.840>could

90
00:04:40.600 --> 00:04:41.700
<00:04:40.600>return <00:04:41.095>something <00:04:41.590>perfect.

91
00:04:42.900 --> 00:04:45.200
<00:04:42.900>So <00:04:43.599>if <00:04:44.299>we

92
00:04:45.200 --> 00:04:48.600
<00:04:45.200>create <00:04:45.550>we <00:04:45.900>have <00:04:46.250>another <00:04:46.599>obstruction

93
00:04:48.600 --> 00:04:52.500
<00:04:48.600>task <00:04:48.833>and <00:04:49.066>if <00:04:49.300>we <00:04:49.533>create <00:04:49.766>just <00:04:50.000>task

94
00:04:51.500 --> 00:04:55.200
<00:04:51.500>like <00:04:51.850>you <00:04:52.200>would <00:04:52.550>you <00:04:52.900>would

95
00:04:54.200 --> 00:04:57.100
<00:04:54.200>create <00:04:54.433>fret <00:04:54.666>the <00:04:54.900>syntax <00:04:55.133>is <00:04:55.366>the <00:04:55.599>same.

96
00:04:58.100 --> 00:05:02.100
<00:04:58.100>But <00:04:58.275>it's <00:04:58.450>an <00:04:58.625>abstraction <00:04:58.800>and <00:04:58.975>it <00:04:59.150>will <00:04:59.325>it <00:04:59.500>will

97
00:05:01.100 --> 00:05:06.000
<00:05:01.100>use <00:05:01.380>fret <00:05:01.660>pull <00:05:01.940>to <00:05:02.220>to <00:05:02.500>use

98
00:05:04.000 --> 00:05:06.300
it.

99
00:05:07.700 --> 00:05:10.100
<00:05:07.700>but <00:05:07.933>we <00:05:08.166>want <00:05:08.400>to <00:05:08.633>return <00:05:08.866>something <00:05:09.099>so

100
00:05:11.400 --> 00:05:14.000
<00:05:11.400>it <00:05:11.679>would <00:05:11.960>look <00:05:12.239>something <00:05:12.520>like <00:05:12.799>this.

101
00:05:14.800 --> 00:05:17.600
<00:05:14.800>We <00:05:15.150>would <00:05:15.500>split <00:05:15.850>the <00:05:16.200>first

102
00:05:17.600 --> 00:05:20.700
<00:05:17.600>line <00:05:17.880>because <00:05:18.160>start <00:05:18.440>the <00:05:18.720>returns <00:05:19.000>voids.

103
00:05:20.700 --> 00:05:23.900
<00:05:20.700>So <00:05:20.933>we <00:05:21.166>need <00:05:21.400>to <00:05:21.633>split <00:05:21.866>this <00:05:22.099>tool

104
00:05:23.900 --> 00:05:26.400
<00:05:23.900>two <00:05:24.133>lines <00:05:24.366>and <00:05:24.599>we <00:05:24.833>can <00:05:25.066>return <00:05:25.299>the

105
00:05:26.400 --> 00:05:26.600
result.

106
00:05:27.200 --> 00:05:29.300
<00:05:27.200>using <00:05:27.666>dot <00:05:28.133>results <00:05:28.599>property

107
00:05:30.800 --> 00:05:33.500
<00:05:30.800>However, <00:05:30.955>it's <00:05:31.111>not <00:05:31.266>great <00:05:31.422>idea <00:05:31.577>to <00:05:31.733>do <00:05:31.888>it <00:05:32.044>like <00:05:32.200>this.

108
00:05:34.400 --> 00:05:37.100
<00:05:34.400>Don't <00:05:34.679>do <00:05:34.960>it. <00:05:35.239>Why <00:05:35.520>because <00:05:35.799>mmm.

109
00:05:38.200 --> 00:05:40.200
<00:05:38.200>You <00:05:38.666>will <00:05:39.133>block <00:05:39.599>fret.

110
00:05:40.700 --> 00:05:45.200
<00:05:40.700>Remember <00:05:40.979>that <00:05:41.260>our <00:05:41.539>calculation <00:05:41.820>was <00:05:42.099>calculating

111
00:05:43.200 --> 00:05:45.500
something.

112
00:05:47.300 --> 00:05:50.800
<00:05:47.300>And <00:05:47.475>it <00:05:47.650>took <00:05:47.825>five <00:05:48.000>seconds <00:05:48.175>so <00:05:48.350>five <00:05:48.525>seconds, <00:05:48.700>the

113
00:05:50.800 --> 00:05:54.000
<00:05:50.800>main <00:05:51.033>threat <00:05:51.266>will <00:05:51.500>do <00:05:51.733>nothing, <00:05:51.966>but <00:05:52.200>wait

114
00:05:53.600 --> 00:05:56.800
<00:05:53.600>for <00:05:53.880>background <00:05:54.160>threat <00:05:54.440>to <00:05:54.720>to <00:05:55.000>finish

115
00:05:56.800 --> 00:05:58.400
<00:05:56.800>so <00:05:57.266>it's <00:05:57.733>not <00:05:58.200>great.

116
00:05:59.300 --> 00:06:01.000
<00:05:59.300>to <00:05:59.650>block <00:06:00.000>our <00:06:00.350>physical <00:06:00.700>threats

117
00:06:01.700 --> 00:06:02.700
<00:06:01.700>our <00:06:02.599>workers

118
00:06:04.400 --> 00:06:05.500
<00:06:04.400>so <00:06:04.729>rule <00:06:05.060>number <00:06:05.390>two

119
00:06:06.500 --> 00:06:09.700
<00:06:06.500>Never <00:06:06.780>ever <00:06:07.060>block <00:06:07.340>Frets <00:06:07.620>try <00:06:07.900>to

120
00:06:09.700 --> 00:06:11.800
<00:06:09.700>avoid <00:06:09.875>it <00:06:10.050>as <00:06:10.224>much <00:06:10.400>as <00:06:10.575>much <00:06:10.750>as <00:06:10.925>you <00:06:11.099>can.

121
00:06:14.600 --> 00:06:17.400
<00:06:14.600>Instead <00:06:14.833>you <00:06:15.066>can <00:06:15.300>use <00:06:15.533>continue <00:06:15.766>with <00:06:16.000>method.

122
00:06:19.200 --> 00:06:22.700
<00:06:19.200>It <00:06:19.433>will <00:06:19.666>start <00:06:19.900>when <00:06:20.133>the <00:06:20.366>the <00:06:20.599>task

123
00:06:22.700 --> 00:06:25.200
<00:06:22.700>our <00:06:23.166>calculation <00:06:23.633>will <00:06:24.099>finish.

124
00:06:26.400 --> 00:06:29.700
<00:06:26.400>It <00:06:26.599>will <00:06:26.799>work. <00:06:27.000>It <00:06:27.200>will <00:06:27.400>be <00:06:27.599>executed <00:06:27.799>on

125
00:06:29.700 --> 00:06:32.800
<00:06:29.700>and <00:06:29.900>under <00:06:30.099>threat. <00:06:30.300>So <00:06:30.500>not <00:06:30.700>on <00:06:30.900>our <00:06:31.099>main

126
00:06:32.800 --> 00:06:36.700
<00:06:32.800>thread <00:06:33.033>it <00:06:33.266>will <00:06:33.500>just <00:06:33.733>continue <00:06:33.966>executing <00:06:34.200>next

127
00:06:35.700 --> 00:06:37.100
lines.

128
00:06:38.700 --> 00:06:42.100
<00:06:38.700>It's <00:06:38.933>not <00:06:39.166>the <00:06:39.400>best <00:06:39.633>syntax <00:06:39.866>and <00:06:40.099>why

129
00:06:41.100 --> 00:06:44.100
<00:06:41.100>it <00:06:41.333>will <00:06:41.566>help <00:06:41.800>us <00:06:42.033>and <00:06:42.266>I <00:06:42.500>will

130
00:06:44.100 --> 00:06:46.600
<00:06:44.100>show <00:06:44.300>you <00:06:44.500>later <00:06:44.700>how <00:06:44.900>to <00:06:45.100>make <00:06:45.300>it <00:06:45.500>simple.

131
00:06:48.300 --> 00:06:52.400
<00:06:48.300>Yes, <00:06:48.475>you <00:06:48.650>can <00:06:48.825>you <00:06:49.000>can <00:06:49.175>hear <00:06:49.350>use <00:06:49.525>result <00:06:49.700>because

132
00:06:51.400 --> 00:06:54.300
<00:06:51.400>the <00:06:52.099>task <00:06:52.799>is

133
00:06:54.300 --> 00:06:57.500
<00:06:54.300>already <00:06:54.533>done <00:06:54.766>when <00:06:55.000>we <00:06:55.233>will <00:06:55.466>invoke <00:06:55.700>The

134
00:06:57.500 --> 00:07:01.400
<00:06:57.500>Continuous <00:06:57.733>so <00:06:57.966>it's <00:06:58.200>safe <00:06:58.433>to <00:06:58.666>use <00:06:58.900>result.

135
00:07:02.800 --> 00:07:06.100
<00:07:02.800>Now <00:07:03.000>let's <00:07:03.200>focus <00:07:03.400>back <00:07:03.600>on <00:07:03.800>this <00:07:04.000>first <00:07:04.200>part.

136
00:07:07.300 --> 00:07:07.700
mmm

137
00:07:08.800 --> 00:07:11.800
<00:07:08.800>It <00:07:09.000>could <00:07:09.200>be <00:07:09.400>problematic <00:07:09.600>to <00:07:09.800>to <00:07:10.000>create <00:07:10.200>threats

138
00:07:11.800 --> 00:07:12.400
<00:07:11.800>like <00:07:12.340>this.

139
00:07:13.800 --> 00:07:16.600
<00:07:13.800>Because <00:07:14.033>you <00:07:14.266>need <00:07:14.500>to <00:07:14.733>manually <00:07:14.966>start <00:07:15.200>the

140
00:07:16.600 --> 00:07:19.400
<00:07:16.600>task. <00:07:16.950>So <00:07:17.300>the <00:07:17.650>Constructor <00:07:18.000>creates

141
00:07:19.400 --> 00:07:23.900
<00:07:19.400>cold <00:07:19.866>tasks, <00:07:20.333>which <00:07:20.799>you

142
00:07:23.900 --> 00:07:24.700
<00:07:23.900>need <00:07:24.260>to <00:07:24.620>start.

143
00:07:25.800 --> 00:07:28.200
<00:07:25.800>That <00:07:26.080>can <00:07:26.360>create <00:07:26.640>problems. <00:07:26.920>If <00:07:27.200>you

144
00:07:28.200 --> 00:07:31.600
<00:07:28.200>have <00:07:28.433>complex <00:07:28.666>logic, <00:07:28.900>you <00:07:29.133>can <00:07:29.366>forgot <00:07:29.599>to

145
00:07:31.600 --> 00:07:34.200
<00:07:31.600>start <00:07:31.880>or <00:07:32.160>you <00:07:32.440>could <00:07:32.720>try <00:07:33.000>to

146
00:07:34.200 --> 00:07:35.500
<00:07:34.200>start <00:07:34.590>at <00:07:34.980>multiple <00:07:35.370>times.

147
00:07:38.200 --> 00:07:41.200
<00:07:38.200>That's <00:07:38.550>why <00:07:38.900>there's <00:07:39.250>another <00:07:39.599>abstraction.

148
00:07:42.300 --> 00:07:44.700
<00:07:42.300>task <00:07:42.650>task <00:07:43.000>Factory <00:07:43.350>start <00:07:43.700>new

149
00:07:45.300 --> 00:07:48.300
<00:07:45.300>and <00:07:45.440>it <00:07:45.580>will <00:07:45.720>it's <00:07:45.860>a <00:07:46.000>single <00:07:46.140>line <00:07:46.280>and <00:07:46.420>it <00:07:46.560>will <00:07:46.700>create

150
00:07:48.300 --> 00:07:50.400
<00:07:48.300>already <00:07:49.000>warm <00:07:49.700>task.

151
00:07:52.200 --> 00:07:53.800
<00:07:52.200>So <00:07:52.666>it's <00:07:53.133>it's <00:07:53.599>easier.

152
00:07:54.900 --> 00:07:58.000
<00:07:54.900>But <00:07:55.133>there <00:07:55.366>is <00:07:55.599>yet <00:07:55.833>another <00:07:56.066>abstraction <00:07:56.299>the

153
00:07:57.300 --> 00:07:58.800
<00:07:57.300>last <00:07:57.750>one <00:07:58.200>I <00:07:58.650>promise.

154
00:08:00.700 --> 00:08:05.700
<00:08:00.700>Task <00:08:00.979>run <00:08:01.260>it's <00:08:01.539>the <00:08:01.820>currently <00:08:02.099>most

155
00:08:04.700 --> 00:08:08.200
<00:08:04.700>recommended <00:08:05.050>way <00:08:05.400>to <00:08:05.750>to <00:08:06.099>offload

156
00:08:07.200 --> 00:08:09.600
<00:08:07.200>some <00:08:07.550>work <00:08:07.900>to <00:08:08.250>another <00:08:08.599>threat.

157
00:08:10.400 --> 00:08:13.100
<00:08:10.400>And <00:08:10.633>it's <00:08:10.866>the <00:08:11.099>task <00:08:11.333>Factory <00:08:11.566>start <00:08:11.799>new

158
00:08:13.100 --> 00:08:14.600
<00:08:13.100>with <00:08:13.775>better <00:08:14.450>defaults.

159
00:08:16.500 --> 00:08:19.300
<00:08:16.500>If <00:08:16.655>you <00:08:16.811>would <00:08:16.966>try <00:08:17.122>to <00:08:17.277>use <00:08:17.433>task <00:08:17.588>Factory <00:08:17.744>start <00:08:17.900>new

160
00:08:19.300 --> 00:08:22.700
<00:08:19.300>it <00:08:19.455>will <00:08:19.611>with <00:08:19.766>the <00:08:19.922>same <00:08:20.077>defaults. <00:08:20.233>It <00:08:20.388>will <00:08:20.544>look <00:08:20.700>something

161
00:08:22.700 --> 00:08:23.100
<00:08:22.700>like <00:08:23.060>this.

162
00:08:23.900 --> 00:08:26.400
<00:08:23.900>Not <00:08:24.250>the <00:08:24.599>most <00:08:24.950>easy <00:08:25.299>code

163
00:08:26.400 --> 00:08:27.000
<00:08:26.400>to <00:08:26.940>write.

164
00:08:28.200 --> 00:08:32.400
<00:08:28.200>Let's <00:08:28.400>focus <00:08:28.599>on <00:08:28.800>the <00:08:29.000>cancellation <00:08:29.200>token. <00:08:29.400>It's <00:08:29.599>a

165
00:08:31.400 --> 00:08:34.400
<00:08:31.400>very <00:08:31.750>important <00:08:32.100>concept <00:08:32.449>concept <00:08:32.799>and

166
00:08:34.400 --> 00:08:36.400
<00:08:34.400>sometimes <00:08:34.750>it's <00:08:35.100>not <00:08:35.449>used <00:08:35.799>enough.

167
00:08:38.100 --> 00:08:41.900
<00:08:38.100>Here <00:08:38.450>is <00:08:38.800>the <00:08:39.150>worker <00:08:39.500>service

168
00:08:41.900 --> 00:08:44.400
<00:08:41.900>up, <00:08:42.133>which <00:08:42.366>was <00:08:42.600>created <00:08:42.833>from <00:08:43.066>the <00:08:43.299>template.

169
00:08:45.800 --> 00:08:48.400
<00:08:45.800>Background <00:08:46.079>service <00:08:46.359>will <00:08:46.640>provide <00:08:46.920>us <00:08:47.199>the

170
00:08:48.400 --> 00:08:51.900
<00:08:48.400>execution <00:08:48.750>executes <00:08:49.100>async <00:08:49.449>method <00:08:49.800>with

171
00:08:51.900 --> 00:08:53.900
<00:08:51.900>the <00:08:52.366>parameter <00:08:52.833>cancellation <00:08:53.300>token.

172
00:08:55.200 --> 00:08:56.200
<00:08:55.200>So <00:08:55.425>we <00:08:55.650>can <00:08:55.875>use <00:08:56.100>it.

173
00:08:57.200 --> 00:09:00.900
<00:08:57.200>Calculation <00:08:57.375>token <00:08:57.550>is <00:08:57.725>a <00:08:57.900>simple <00:08:58.075>struct <00:08:58.250>that <00:08:58.425>will <00:08:58.600>signal

174
00:09:00.900 --> 00:09:03.800
<00:09:00.900>us <00:09:01.366>that <00:09:01.833>the <00:09:02.300>someone

175
00:09:03.800 --> 00:09:06.700
<00:09:03.800>who <00:09:03.974>calls <00:09:04.150>us <00:09:04.324>won't <00:09:04.500>us <00:09:04.675>to <00:09:04.849>stop <00:09:05.025>want <00:09:05.199>to

176
00:09:06.700 --> 00:09:08.000
<00:09:06.700>ask <00:09:06.992>to <00:09:07.285>cancel <00:09:07.577>the <00:09:07.870>operation.

177
00:09:09.100 --> 00:09:12.400
<00:09:09.100>And <00:09:09.255>there <00:09:09.411>are <00:09:09.566>two <00:09:09.722>ways <00:09:09.877>to <00:09:10.033>handle <00:09:10.188>the <00:09:10.344>cancellation <00:09:10.500>token.

178
00:09:13.600 --> 00:09:17.300
<00:09:13.600>First <00:09:13.880>you <00:09:14.160>can <00:09:14.440>manually <00:09:14.720>manually <00:09:15.000>check

179
00:09:16.300 --> 00:09:19.100
<00:09:16.300>the <00:09:16.766>East <00:09:17.233>cancellation <00:09:17.699>requested.

180
00:09:20.100 --> 00:09:23.800
<00:09:20.100>Do <00:09:20.255>some <00:09:20.411>cleanup <00:09:20.566>if <00:09:20.722>you <00:09:20.877>created <00:09:21.033>some <00:09:21.188>resources <00:09:21.344>and <00:09:21.500>throw

181
00:09:23.800 --> 00:09:26.300
<00:09:23.800>operation <00:09:24.500>canceled <00:09:25.199>exception.

182
00:09:27.800 --> 00:09:30.900
<00:09:27.800>However, <00:09:28.079>there <00:09:28.359>is <00:09:28.640>a <00:09:28.920>second <00:09:29.199>syntax

183
00:09:30.900 --> 00:09:33.600
<00:09:30.900>easier. <00:09:31.250>You <00:09:31.600>can <00:09:31.949>register <00:09:32.300>your

184
00:09:33.600 --> 00:09:36.900
<00:09:33.600>cleanup <00:09:33.833>method <00:09:34.066>if <00:09:34.300>you <00:09:34.533>have <00:09:34.766>some <00:09:35.000>and

185
00:09:36.900 --> 00:09:40.300
<00:09:36.900>then <00:09:37.366>periodically <00:09:37.833>just <00:09:38.300>try

186
00:09:39.300 --> 00:09:43.300
<00:09:39.300>to <00:09:40.000>execute <00:09:40.699>this

187
00:09:42.300 --> 00:09:45.300
<00:09:42.300>one <00:09:42.650>method <00:09:43.000>and <00:09:43.349>it <00:09:43.699>will.

188
00:09:46.400 --> 00:09:49.200
<00:09:46.400>Check <00:09:46.680>and <00:09:46.959>throw <00:09:47.240>if <00:09:47.520>constellation <00:09:47.800>was

189
00:09:49.200 --> 00:09:49.600
requested.

190
00:09:52.700 --> 00:09:55.300
<00:09:52.700>There <00:09:52.933>are <00:09:53.166>two <00:09:53.400>more <00:09:53.633>advanced <00:09:53.866>topics, <00:09:54.100>but

191
00:09:55.300 --> 00:09:56.500
<00:09:55.300>there <00:09:55.839>are <00:09:56.380>important.

192
00:09:57.900 --> 00:09:59.600
<00:09:57.900>first <00:09:58.366>is <00:09:58.833>synchronization <00:09:59.300>context

193
00:10:01.200 --> 00:10:04.500
<00:10:01.200>this <00:10:01.480>represents <00:10:01.760>the <00:10:02.040>abstraction <00:10:02.320>the <00:10:02.600>end

194
00:10:04.500 --> 00:10:06.000
<00:10:04.500>of <00:10:04.770>the <00:10:05.040>environment <00:10:05.310>you're <00:10:05.580>currently <00:10:05.850>in.

195
00:10:07.300 --> 00:10:10.600
<00:10:07.300>So <00:10:07.474>for <00:10:07.650>example <00:10:07.824>if <00:10:08.000>you <00:10:08.175>are <00:10:08.349>in <00:10:08.525>UI <00:10:08.699>environment.

196
00:10:11.500 --> 00:10:14.600
<00:10:11.500>There's <00:10:11.675>a <00:10:11.850>special <00:10:12.025>rule <00:10:12.200>that <00:10:12.375>there <00:10:12.550>is <00:10:12.725>a <00:10:12.900>UI

197
00:10:14.600 --> 00:10:17.600
<00:10:14.600>threat <00:10:14.880>that <00:10:15.160>only <00:10:15.440>this <00:10:15.720>threat <00:10:16.000>can

198
00:10:17.600 --> 00:10:19.000
<00:10:17.600>manipulate <00:10:18.230>the <00:10:18.860>UI.

199
00:10:20.000 --> 00:10:20.900
components

200
00:10:22.000 --> 00:10:22.200
so

201
00:10:23.600 --> 00:10:27.200
<00:10:23.600>That's <00:10:24.066>that's <00:10:24.533>and <00:10:25.000>synchronization

202
00:10:26.200 --> 00:10:30.400
<00:10:26.200>context <00:10:26.375>can <00:10:26.550>be <00:10:26.725>used <00:10:26.900>for <00:10:27.075>many <00:10:27.250>other <00:10:27.425>environments <00:10:27.600>and

203
00:10:30.400 --> 00:10:32.700
<00:10:30.400>many <00:10:30.750>other <00:10:31.100>logic <00:10:31.449>can <00:10:31.800>be.

204
00:10:33.700 --> 00:10:33.900
here

205
00:10:36.200 --> 00:10:40.100
<00:10:36.200>Here <00:10:36.375>we <00:10:36.550>are <00:10:36.725>in <00:10:36.900>the <00:10:37.075>blazor <00:10:37.250>server <00:10:37.425>up <00:10:37.600>in

206
00:10:39.100 --> 00:10:41.400
<00:10:39.100>some <00:10:39.450>on <00:10:39.800>click <00:10:40.150>or <00:10:40.500>something.

207
00:10:43.300 --> 00:10:47.100
<00:10:43.300>Currently <00:10:43.533>we <00:10:43.766>are <00:10:44.000>on <00:10:44.233>the <00:10:44.466>renderers <00:10:44.699>synchronization

208
00:10:46.100 --> 00:10:50.100
<00:10:46.100>context. <00:10:46.380>It's <00:10:46.660>the <00:10:46.940>Blazers <00:10:47.220>implanted <00:10:47.500>implementation

209
00:10:49.100 --> 00:10:53.200
<00:10:49.100>of <00:10:49.450>synchronization <00:10:49.800>context. <00:10:50.150>So <00:10:50.500>it

210
00:10:52.200 --> 00:10:55.400
<00:10:52.200>means <00:10:52.375>that <00:10:52.550>we <00:10:52.725>are <00:10:52.900>now <00:10:53.075>on <00:10:53.250>the <00:10:53.425>UI <00:10:53.600>threat

211
00:10:55.400 --> 00:10:57.000
<00:10:55.400>and <00:10:55.750>we <00:10:56.100>can <00:10:56.449>manipulate <00:10:56.800>UI.

212
00:10:58.600 --> 00:10:59.200
<00:10:58.600>We <00:10:58.870>can <00:10:59.140>check.

213
00:11:00.600 --> 00:11:02.700
<00:11:00.600>the <00:11:01.066>current <00:11:01.533>synchronization <00:11:02.000>context

214
00:11:03.500 --> 00:11:06.000
<00:11:03.500>by <00:11:03.966>using <00:11:04.433>this <00:11:04.900>property

215
00:11:08.800 --> 00:11:11.600
<00:11:08.800>if <00:11:09.033>we <00:11:09.266>create <00:11:09.500>new <00:11:09.733>fret <00:11:09.966>background <00:11:10.199>thread.

216
00:11:13.300 --> 00:11:16.500
<00:11:13.300>By <00:11:13.455>default, <00:11:13.611>we <00:11:13.766>will <00:11:13.922>be <00:11:14.077>in <00:11:14.233>the <00:11:14.388>default <00:11:14.544>synchronization <00:11:14.699>context.

217
00:11:17.300 --> 00:11:20.600
<00:11:17.300>Which <00:11:17.474>means <00:11:17.650>it's <00:11:17.824>any <00:11:18.000>fret <00:11:18.175>from <00:11:18.349>the <00:11:18.525>Fret <00:11:18.699>Pole.

218
00:11:21.900 --> 00:11:24.500
<00:11:21.900>It <00:11:22.180>will <00:11:22.459>have <00:11:22.740>the <00:11:23.020>value <00:11:23.300>of

219
00:11:24.500 --> 00:11:27.200
<00:11:24.500>synchronization <00:11:24.780>context <00:11:25.060>that <00:11:25.340>current <00:11:25.620>it <00:11:25.900>will

220
00:11:27.200 --> 00:11:27.800
<00:11:27.200>be <00:11:27.740>no.

221
00:11:29.900 --> 00:11:32.300
<00:11:29.900>But <00:11:30.100>and <00:11:30.300>it's <00:11:30.500>it's <00:11:30.699>a <00:11:30.900>good <00:11:31.100>default <00:11:31.300>because

222
00:11:32.300 --> 00:11:36.700
<00:11:32.300>often <00:11:32.650>if <00:11:33.000>you <00:11:33.349>create <00:11:33.699>background

223
00:11:36.700 --> 00:11:39.300
<00:11:36.700>thread, <00:11:36.875>you <00:11:37.050>just <00:11:37.225>want <00:11:37.400>some <00:11:37.575>heavy <00:11:37.750>calculations <00:11:37.925>and <00:11:38.100>you

224
00:11:39.300 --> 00:11:42.900
<00:11:39.300>don't <00:11:39.500>want <00:11:39.699>to <00:11:39.900>UI <00:11:40.099>to <00:11:40.300>feel <00:11:40.500>less <00:11:40.699>responsive

225
00:11:42.900 --> 00:11:43.700
<00:11:42.900>for <00:11:43.260>the <00:11:43.620>user.

226
00:11:45.100 --> 00:11:47.300
<00:11:45.100>So <00:11:45.333>it's <00:11:45.566>a <00:11:45.800>great <00:11:46.033>great <00:11:46.266>default, <00:11:46.500>but

227
00:11:48.400 --> 00:11:52.000
<00:11:48.400>Sometimes <00:11:48.633>you <00:11:48.866>want <00:11:49.100>to <00:11:49.333>update <00:11:49.566>the <00:11:49.800>UI

228
00:11:51.200 --> 00:11:54.300
<00:11:51.200>after <00:11:51.375>all <00:11:51.550>so <00:11:51.725>we <00:11:51.900>can <00:11:52.075>go <00:11:52.250>back <00:11:52.425>to <00:11:52.600>the

229
00:11:54.300 --> 00:11:57.500
<00:11:54.300>render <00:11:54.650>synchronization <00:11:55.000>context <00:11:55.349>by <00:11:55.699>using

230
00:11:57.500 --> 00:12:00.400
<00:11:57.500>the <00:11:57.780>captured <00:11:58.060>context <00:11:58.340>and <00:11:58.620>using <00:11:58.900>the

231
00:12:00.400 --> 00:12:01.400
<00:12:00.400>post <00:12:00.699>method <00:12:01.000>on <00:12:01.300>it.

232
00:12:02.500 --> 00:12:05.100
<00:12:02.500>Now <00:12:02.733>you <00:12:02.966>can <00:12:03.200>manipulate <00:12:03.433>the <00:12:03.666>UI <00:12:03.900>again.

233
00:12:06.600 --> 00:12:06.900
second

234
00:12:08.100 --> 00:12:09.800
<00:12:08.100>abstraction <00:12:08.566>is <00:12:09.033>Task <00:12:09.500>scheduler.

235
00:12:11.200 --> 00:12:14.700
<00:12:11.200>Synchronization <00:12:11.433>context <00:12:11.666>is <00:12:11.900>General <00:12:12.133>obstruction <00:12:12.366>over <00:12:12.600>environment

236
00:12:14.700 --> 00:12:17.500
<00:12:14.700>and <00:12:14.933>task <00:12:15.166>schedule <00:12:15.400>only <00:12:15.633>focuses <00:12:15.866>on <00:12:16.100>the

237
00:12:17.500 --> 00:12:17.900
scheduling.

238
00:12:18.600 --> 00:12:20.100
<00:12:18.600>and <00:12:19.050>only <00:12:19.500>for <00:12:19.950>tasks

239
00:12:21.700 --> 00:12:24.900
<00:12:21.700>so <00:12:21.900>it <00:12:22.100>will <00:12:22.300>work <00:12:22.500>together <00:12:22.700>with <00:12:22.900>synchronization <00:12:23.100>context

240
00:12:24.900 --> 00:12:26.500
<00:12:24.900>to <00:12:25.250>pick <00:12:25.600>the <00:12:25.949>best <00:12:26.300>scheduler.

241
00:12:28.700 --> 00:12:31.200
<00:12:28.700>Here <00:12:28.875>we <00:12:29.050>are <00:12:29.225>gone <00:12:29.400>again <00:12:29.575>in <00:12:29.750>the <00:12:29.925>Blazer <00:12:30.100>server

242
00:12:31.200 --> 00:12:31.900
application.

243
00:12:33.500 --> 00:12:36.900
<00:12:33.500>Currently <00:12:33.733>our <00:12:33.966>task <00:12:34.200>scheduler <00:12:34.433>is <00:12:34.666>thread <00:12:34.900>pool

244
00:12:36.900 --> 00:12:39.400
<00:12:36.900>task <00:12:37.100>scheduler. <00:12:37.300>So <00:12:37.500>it <00:12:37.699>means <00:12:37.900>that <00:12:38.100>default <00:12:38.300>one.

245
00:12:39.400 --> 00:12:42.200
<00:12:39.400>It <00:12:39.600>will <00:12:39.800>be <00:12:40.000>the <00:12:40.199>any <00:12:40.400>threat <00:12:40.600>from <00:12:40.800>the

246
00:12:42.200 --> 00:12:43.300
<00:12:42.200>Fret <00:12:43.189>pull.

247
00:12:46.400 --> 00:12:49.800
<00:12:46.400>If <00:12:46.600>we <00:12:46.800>if <00:12:47.000>you <00:12:47.199>create <00:12:47.400>new <00:12:47.600>background <00:12:47.800>work.

248
00:12:50.600 --> 00:12:54.500
<00:12:50.600>You <00:12:50.775>will <00:12:50.950>still <00:12:51.125>be <00:12:51.300>on <00:12:51.475>the <00:12:51.650>default <00:12:51.825>task <00:12:52.000>scheduler.

249
00:12:56.200 --> 00:12:59.700
<00:12:56.200>And <00:12:56.400>if <00:12:56.600>you <00:12:56.800>want <00:12:57.000>to <00:12:57.200>create <00:12:57.400>create <00:12:57.600>some

250
00:12:59.700 --> 00:13:02.700
<00:12:59.700>execute <00:13:01.100>on

251
00:13:02.700 --> 00:13:04.300
<00:13:02.700>the <00:13:03.050>UI <00:13:03.400>thread <00:13:03.750>you <00:13:04.100>could.

252
00:13:05.100 --> 00:13:09.600
<00:13:05.100>Mmm, <00:13:05.333>you <00:13:05.566>could <00:13:05.800>pass <00:13:06.033>the <00:13:06.266>the <00:13:06.500>synchronization

253
00:13:08.600 --> 00:13:10.100
context.

254
00:13:10.900 --> 00:13:14.100
<00:13:10.900>To <00:13:11.133>the <00:13:11.366>method <00:13:11.600>by <00:13:11.833>using <00:13:12.066>from <00:13:12.300>current

255
00:13:13.100 --> 00:13:16.500
<00:13:13.100>synchronization <00:13:13.450>content <00:13:13.800>context <00:13:14.150>it <00:13:14.500>will

256
00:13:16.500 --> 00:13:19.700
<00:13:16.500>behind <00:13:16.733>the <00:13:16.966>scenes <00:13:17.200>capture <00:13:17.433>the <00:13:17.666>current <00:13:17.900>synchronization

257
00:13:19.700 --> 00:13:22.400
<00:13:19.700>context <00:13:19.875>and <00:13:20.050>use <00:13:20.225>the <00:13:20.400>post <00:13:20.575>method <00:13:20.750>as <00:13:20.925>we <00:13:21.100>saw

258
00:13:22.400 --> 00:13:22.500
before.

259
00:13:24.700 --> 00:13:26.300
<00:13:24.700>So <00:13:24.980>those <00:13:25.260>two <00:13:25.540>types <00:13:25.820>work <00:13:26.100>together?

260
00:13:27.300 --> 00:13:27.500
it's

261
00:13:29.200 --> 00:13:34.400
<00:13:29.200>how <00:13:29.375>they <00:13:29.550>are <00:13:29.725>how <00:13:29.900>the <00:13:30.075>scheduler <00:13:30.250>is <00:13:30.425>is <00:13:30.600>determined

262
00:13:32.400 --> 00:13:35.800
<00:13:32.400>is <00:13:33.100>more <00:13:33.800>complex

263
00:13:35.800 --> 00:13:41.000
<00:13:35.800>than <00:13:36.079>that, <00:13:36.359>but <00:13:36.640>the <00:13:36.920>simple <00:13:37.199>simple

264
00:13:39.000 --> 00:13:42.100
<00:13:39.000>algorithm <00:13:40.400>is

265
00:13:42.100 --> 00:13:42.700
<00:13:42.100>something <00:13:42.370>like <00:13:42.640>this.

266
00:13:44.200 --> 00:13:47.100
<00:13:44.200>If <00:13:44.375>the <00:13:44.550>synchronization <00:13:44.725>context <00:13:44.900>is <00:13:45.075>not <00:13:45.250>default <00:13:45.425>so <00:13:45.600>something.

267
00:13:48.100 --> 00:13:51.400
<00:13:48.100>It <00:13:48.300>will <00:13:48.500>use <00:13:48.700>this <00:13:48.900>and <00:13:49.100>if <00:13:49.300>task <00:13:49.500>scheduler

268
00:13:51.400 --> 00:13:54.800
<00:13:51.400>is <00:13:51.750>something <00:13:52.100>not <00:13:52.449>default. <00:13:52.800>It

269
00:13:54.800 --> 00:13:57.000
<00:13:54.800>will <00:13:55.266>pick <00:13:55.733>it <00:13:56.199>instead.

270
00:13:59.200 --> 00:14:02.700
<00:13:59.200>Okay, <00:13:59.400>so <00:13:59.600>now <00:13:59.800>we <00:14:00.000>can <00:14:00.200>talk <00:14:00.400>about <00:14:00.600>asynchronicity.

271
00:14:04.400 --> 00:14:07.100
<00:14:04.400>Asynchronicity <00:14:04.750>or <00:14:05.100>help <00:14:05.449>us <00:14:05.800>with

272
00:14:07.100 --> 00:14:10.600
<00:14:07.100>IO <00:14:07.275>work. <00:14:07.450>So <00:14:07.625>if <00:14:07.800>you <00:14:07.975>want <00:14:08.150>to <00:14:08.325>call <00:14:08.500>the

273
00:14:10.600 --> 00:14:13.200
<00:14:10.600>database <00:14:10.800>called <00:14:11.000>the <00:14:11.200>network <00:14:11.400>called <00:14:11.600>the <00:14:11.800>file <00:14:12.000>system.

274
00:14:13.900 --> 00:14:16.500
<00:14:13.900>And <00:14:14.133>it <00:14:14.366>will <00:14:14.600>be <00:14:14.833>I/O <00:14:15.066>operation <00:14:15.300>and

275
00:14:16.500 --> 00:14:19.000
<00:14:16.500>I <00:14:16.733>think <00:14:16.966>I <00:14:17.200>wait <00:14:17.433>will <00:14:17.666>help <00:14:17.900>us.

276
00:14:22.100 --> 00:14:23.600
<00:14:22.100>without <00:14:22.775>a <00:14:23.450>synchronicity

277
00:14:24.300 --> 00:14:26.700
<00:14:24.300>if <00:14:24.579>we <00:14:24.859>do <00:14:25.140>some <00:14:25.420>IO <00:14:25.699>operation

278
00:14:27.800 --> 00:14:28.000
here

279
00:14:29.200 --> 00:14:32.200
<00:14:29.200>our <00:14:29.433>fret <00:14:29.666>will <00:14:29.900>just <00:14:30.133>wait <00:14:30.366>so <00:14:30.600>if

280
00:14:33.400 --> 00:14:36.400
<00:14:33.400>if <00:14:33.633>the <00:14:33.866>Iowa <00:14:34.100>will <00:14:34.333>start <00:14:34.566>the <00:14:34.800>Fret

281
00:14:36.400 --> 00:14:36.700
<00:14:36.400>will <00:14:36.670>just

282
00:14:37.300 --> 00:14:41.600
<00:14:37.300>wait <00:14:37.533>and <00:14:37.766>just <00:14:38.000>watch <00:14:38.233>the <00:14:38.466>the <00:14:38.699>database

283
00:14:40.600 --> 00:14:43.300
<00:14:40.600>to <00:14:40.950>to <00:14:41.300>return <00:14:41.650>the <00:14:42.000>result

284
00:14:43.300 --> 00:14:46.300
<00:14:43.300>and <00:14:43.455>it <00:14:43.611>will <00:14:43.766>just <00:14:43.922>sit <00:14:44.077>there <00:14:44.233>doing <00:14:44.388>nothing. <00:14:44.544>It <00:14:44.699>will

285
00:14:46.300 --> 00:14:46.700
<00:14:46.300>be <00:14:46.660>blocked.

286
00:14:48.200 --> 00:14:51.800
<00:14:48.200>And <00:14:48.375>you <00:14:48.550>remember <00:14:48.725>our <00:14:48.900>rule <00:14:49.075>don't <00:14:49.250>block <00:14:49.425>Frets. <00:14:49.600>So

287
00:14:53.300 --> 00:14:55.400
<00:14:53.300>We <00:14:53.650>can <00:14:54.000>use <00:14:54.349>a <00:14:54.699>synchronicity.

288
00:14:56.300 --> 00:14:58.300
<00:14:56.300>It <00:14:56.533>will <00:14:56.766>when <00:14:57.000>the <00:14:57.233>io <00:14:57.466>will <00:14:57.699>start.

289
00:14:59.100 --> 00:15:02.600
<00:14:59.100>The <00:14:59.300>our <00:14:59.500>fret <00:14:59.700>will <00:14:59.900>be <00:15:00.100>free <00:15:00.300>to <00:15:00.500>do

290
00:15:02.600 --> 00:15:03.600
<00:15:02.600>some <00:15:03.050>other <00:15:03.500>work.

291
00:15:05.100 --> 00:15:08.500
<00:15:05.100>And <00:15:05.333>now <00:15:05.566>no <00:15:05.800>Fred <00:15:06.033>will <00:15:06.266>wait <00:15:06.500>for

292
00:15:08.500 --> 00:15:11.100
<00:15:08.500>the <00:15:08.733>operation <00:15:08.966>when <00:15:09.200>the <00:15:09.433>operation <00:15:09.666>will <00:15:09.900>finish.

293
00:15:12.200 --> 00:15:14.400
<00:15:12.200>Some <00:15:12.400>fret <00:15:12.600>will <00:15:12.800>pick <00:15:13.000>it <00:15:13.200>up <00:15:13.400>and <00:15:13.600>continue.

294
00:15:15.600 --> 00:15:16.500
<00:15:15.600>So <00:15:15.870>that's <00:15:16.140>the <00:15:16.410>idea.

295
00:15:18.900 --> 00:15:22.900
<00:15:18.900>Here <00:15:19.133>we <00:15:19.366>have <00:15:19.600>the <00:15:19.833>standard <00:15:20.066>synchronous <00:15:20.300>operation

296
00:15:21.900 --> 00:15:24.700
<00:15:21.900>when <00:15:22.180>we <00:15:22.459>want <00:15:22.740>to <00:15:23.020>get <00:15:23.300>the

297
00:15:24.700 --> 00:15:26.800
<00:15:24.700>item <00:15:24.980>for <00:15:25.260>example <00:15:25.540>from <00:15:25.820>the <00:15:26.100>database.

298
00:15:29.800 --> 00:15:32.600
<00:15:29.800>When <00:15:30.079>the <00:15:30.359>task <00:15:30.640>was <00:15:30.920>were <00:15:31.199>created

299
00:15:32.600 --> 00:15:35.500
<00:15:32.600>and <00:15:32.950>they <00:15:33.300>continue <00:15:33.650>with <00:15:34.000>method

300
00:15:35.500 --> 00:15:38.700
<00:15:35.500>with <00:15:35.733>them <00:15:35.966>we <00:15:36.200>could <00:15:36.433>use <00:15:36.666>this <00:15:36.900>syntax.

301
00:15:40.300 --> 00:15:44.400
<00:15:40.300>But <00:15:40.455>now <00:15:40.611>with <00:15:40.766>async <00:15:40.922>await <00:15:41.077>we <00:15:41.233>can <00:15:41.388>use <00:15:41.544>much <00:15:41.699>simpler

302
00:15:43.400 --> 00:15:46.400
<00:15:43.400>syntax <00:15:43.750>that <00:15:44.100>is <00:15:44.449>very <00:15:44.800>similar

303
00:15:46.400 --> 00:15:49.700
<00:15:46.400>to <00:15:46.680>The <00:15:46.959>Blocking. <00:15:47.240>Mmm <00:15:47.520>syntax. <00:15:47.800>We

304
00:15:49.700 --> 00:15:50.400
<00:15:49.700>all <00:15:50.015>familiar <00:15:50.329>with

305
00:15:52.400 --> 00:15:55.400
<00:15:52.400>So <00:15:52.600>what <00:15:52.800>is <00:15:53.000>the <00:15:53.199>flow <00:15:53.400>we <00:15:53.600>go <00:15:53.800>to

306
00:15:55.400 --> 00:15:58.700
<00:15:55.400>the <00:15:55.680>we <00:15:55.959>invoke <00:15:56.240>get <00:15:56.520>item <00:15:56.800>icing

307
00:15:58.700 --> 00:15:59.700
<00:15:58.700>go <00:15:59.000>to <00:15:59.300>the <00:15:59.600>database?

308
00:16:01.100 --> 00:16:04.600
<00:16:01.100>And <00:16:01.275>we <00:16:01.450>awaited <00:16:01.625>so <00:16:01.800>we <00:16:01.975>signaled <00:16:02.150>that <00:16:02.325>we <00:16:02.500>want

309
00:16:04.600 --> 00:16:07.700
<00:16:04.600>the <00:16:04.755>result <00:16:04.911>and <00:16:05.066>we <00:16:05.222>want <00:16:05.377>to <00:16:05.533>continue <00:16:05.688>this <00:16:05.844>method <00:16:06.000>until

310
00:16:07.700 --> 00:16:08.700
<00:16:07.700>the <00:16:08.000>result <00:16:08.300>is <00:16:08.600>over.

311
00:16:10.200 --> 00:16:13.700
<00:16:10.200>And <00:16:10.480>then <00:16:10.760>what <00:16:11.040>we <00:16:11.320>what <00:16:11.600>what

312
00:16:13.700 --> 00:16:15.900
<00:16:13.700>we <00:16:13.900>can <00:16:14.100>do <00:16:14.300>with <00:16:14.500>with <00:16:14.700>the <00:16:14.900>threat <00:16:15.100>because

313
00:16:16.600 --> 00:16:19.700
<00:16:16.600>The <00:16:16.833>Fret <00:16:17.066>can <00:16:17.300>continue <00:16:17.533>it's <00:16:17.766>blocked, <00:16:18.000>but

314
00:16:19.700 --> 00:16:22.300
<00:16:19.700>it's <00:16:19.900>not <00:16:20.100>really <00:16:20.300>blocked. <00:16:20.500>It <00:16:20.700>will <00:16:20.900>jump <00:16:21.100>out

315
00:16:22.300 --> 00:16:23.000
<00:16:22.300>of <00:16:22.615>the <00:16:22.930>function.

316
00:16:24.700 --> 00:16:28.100
<00:16:24.700>And <00:16:24.980>it <00:16:25.260>will <00:16:25.540>it <00:16:25.820>will <00:16:26.100>execute

317
00:16:27.100 --> 00:16:31.500
<00:16:27.100>will <00:16:27.333>go <00:16:27.566>back <00:16:27.800>to <00:16:28.033>the <00:16:28.266>parent <00:16:28.500>method.

318
00:16:32.500 --> 00:16:35.700
<00:16:32.500>And <00:16:32.700>it <00:16:32.900>will <00:16:33.100>execute <00:16:33.300>the <00:16:33.500>current <00:16:33.700>method <00:16:33.900>until

319
00:16:35.700 --> 00:16:38.400
<00:16:35.700>it <00:16:35.980>hits <00:16:36.260>the <00:16:36.540>await <00:16:36.820>and <00:16:37.100>then

320
00:16:38.400 --> 00:16:41.500
<00:16:38.400>it <00:16:38.540>will <00:16:38.680>jump <00:16:38.819>out <00:16:38.959>of <00:16:39.100>the <00:16:39.240>apparent <00:16:39.380>method <00:16:39.520>and <00:16:39.660>so <00:16:39.800>on

321
00:16:41.500 --> 00:16:44.300
<00:16:41.500>and <00:16:41.640>so <00:16:41.780>on <00:16:41.920>until <00:16:42.060>it <00:16:42.200>will <00:16:42.340>jump <00:16:42.480>out <00:16:42.620>of <00:16:42.760>the <00:16:42.900>main

322
00:16:44.300 --> 00:16:47.500
<00:16:44.300>method <00:16:44.500>then <00:16:44.699>the <00:16:44.900>Fret <00:16:45.099>is <00:16:45.300>free <00:16:45.500>in <00:16:45.699>the

323
00:16:47.500 --> 00:16:49.500
<00:16:47.500>in <00:16:47.966>the <00:16:48.433>Fret <00:16:48.900>pool.

324
00:16:51.500 --> 00:16:52.700
<00:16:51.500>when <00:16:51.860>the <00:16:52.220>io <00:16:52.580>finishes

325
00:16:54.300 --> 00:16:55.700
<00:16:54.300>some <00:16:54.615>fret <00:16:54.930>will <00:16:55.245>go <00:16:55.560>back.

326
00:16:56.600 --> 00:16:59.500
<00:16:56.600>And <00:16:56.833>it <00:16:57.066>will <00:16:57.300>pick <00:16:57.533>the <00:16:57.766>the <00:16:58.000>state

327
00:16:59.500 --> 00:17:01.300
<00:16:59.500>we <00:16:59.780>were <00:17:00.060>currently <00:17:00.340>in <00:17:00.620>this <00:17:00.900>method.

328
00:17:02.400 --> 00:17:04.000
<00:17:02.400>And <00:17:02.866>it <00:17:03.333>will <00:17:03.800>continue.

329
00:17:04.900 --> 00:17:07.400
<00:17:04.900>We <00:17:05.055>will <00:17:05.211>get <00:17:05.366>the <00:17:05.522>result <00:17:05.677>because <00:17:05.833>it <00:17:05.988>will <00:17:06.144>be <00:17:06.300>already

330
00:17:07.400 --> 00:17:07.700
there.

331
00:17:09.300 --> 00:17:12.400
<00:17:09.300>And <00:17:09.579>continue <00:17:09.859>like <00:17:10.139>nothing <00:17:10.419>happened. <00:17:10.700>Nothing

332
00:17:12.400 --> 00:17:13.200
<00:17:12.400>special <00:17:13.120>happens.

333
00:17:14.800 --> 00:17:17.600
<00:17:14.800>They <00:17:14.974>all <00:17:15.149>all <00:17:15.325>this <00:17:15.500>magic <00:17:15.675>is <00:17:15.849>possible <00:17:16.024>because <00:17:16.200>we

334
00:17:17.600 --> 00:17:20.600
<00:17:17.599>marked <00:17:17.949>method <00:17:18.300>as <00:17:18.649>async <00:17:19.000>if

335
00:17:20.600 --> 00:17:23.700
<00:17:20.599>we <00:17:20.800>await <00:17:21.000>something. <00:17:21.199>We <00:17:21.399>need <00:17:21.599>to <00:17:21.800>Mark <00:17:22.000>the

336
00:17:23.700 --> 00:17:26.900
<00:17:23.700>method <00:17:23.933>as <00:17:24.166>async <00:17:24.400>it <00:17:24.633>will <00:17:24.866>compile. <00:17:25.100>It

337
00:17:26.900 --> 00:17:29.900
<00:17:26.900>will <00:17:27.133>allow <00:17:27.366>compiler <00:17:27.600>to <00:17:27.833>transform <00:17:28.066>it <00:17:28.300>to

338
00:17:29.900 --> 00:17:30.800
<00:17:29.900>the <00:17:30.305>state <00:17:30.710>machine.

339
00:17:34.100 --> 00:17:38.000
<00:17:34.100>State <00:17:34.333>machine, <00:17:34.566>don't <00:17:34.800>worry. <00:17:35.033>It's <00:17:35.266>something <00:17:35.500>like

340
00:17:37.200 --> 00:17:40.100
<00:17:37.200>you <00:17:37.666>would <00:17:38.133>use <00:17:38.600>yield.

341
00:17:40.900 --> 00:17:42.700
expression

342
00:17:44.700 --> 00:17:44.800
so

343
00:17:46.600 --> 00:17:49.100
<00:17:46.600>it <00:17:46.800>looks <00:17:47.000>something <00:17:47.199>like <00:17:47.399>this <00:17:47.600>here. <00:17:47.800>We <00:17:48.000>have

344
00:17:49.100 --> 00:17:50.000
<00:17:49.100>two <00:17:49.910>awaits.

345
00:17:50.600 --> 00:17:51.900
<00:17:50.600>and <00:17:51.185>we <00:17:51.770>have

346
00:17:54.000 --> 00:17:54.300
why?

347
00:18:02.800 --> 00:18:05.200
<00:18:02.800>Now <00:18:03.149>we <00:18:03.500>have <00:18:03.850>two <00:18:04.200>awaits.

348
00:18:06.600 --> 00:18:09.700
<00:18:06.600>Oh, <00:18:06.833>sorry, <00:18:07.066>where <00:18:07.300>are <00:18:07.533>we? <00:18:07.766>It's <00:18:08.000>not

349
00:18:09.700 --> 00:18:13.600
<00:18:09.700>synced <00:18:09.900>up. <00:18:10.100>So <00:18:10.300>it's <00:18:10.500>weird. <00:18:10.700>Okay, <00:18:10.900>so <00:18:11.100>we

350
00:18:13.600 --> 00:18:17.000
<00:18:13.600>have <00:18:13.774>to <00:18:13.949>wait <00:18:14.125>and <00:18:14.300>we <00:18:14.475>have <00:18:14.649>three <00:18:14.824>states <00:18:15.000>before

351
00:18:16.300 --> 00:18:19.900
<00:18:16.300>I <00:18:16.500>wait <00:18:16.700>between <00:18:16.899>the <00:18:17.100>awaits <00:18:17.300>and <00:18:17.500>after <00:18:17.700>awaits.

352
00:18:21.500 --> 00:18:22.300
<00:18:21.500>Visually <00:18:21.740>something <00:18:21.980>like <00:18:22.220>this.

353
00:18:23.700 --> 00:18:26.700
<00:18:23.700>We <00:18:24.166>can <00:18:24.633>move <00:18:25.100>the

354
00:18:26.700 --> 00:18:29.300
<00:18:26.700>awaits <00:18:27.166>much <00:18:27.633>further <00:18:28.100>in

355
00:18:29.300 --> 00:18:32.300
<00:18:29.300>the <00:18:29.580>function. <00:18:29.860>But <00:18:30.139>and <00:18:30.419>then <00:18:30.700>all

356
00:18:32.300 --> 00:18:35.300
<00:18:32.300>those <00:18:32.580>two <00:18:32.860>operations <00:18:33.139>will <00:18:33.419>run <00:18:33.700>concurrently.

357
00:18:37.200 --> 00:18:40.700
<00:18:37.200>So <00:18:37.550>those <00:18:37.900>will <00:18:38.250>start <00:18:38.600>we'll

358
00:18:40.700 --> 00:18:44.100
<00:18:40.700>do <00:18:40.933>something <00:18:41.166>else. <00:18:41.400>And <00:18:41.633>after <00:18:41.866>sometime <00:18:42.100>you

359
00:18:43.100 --> 00:18:46.600
<00:18:43.100>will <00:18:43.300>avoid <00:18:43.500>them <00:18:43.699>avoid <00:18:43.899>them <00:18:44.100>and <00:18:44.300>maybe <00:18:44.500>they

360
00:18:46.600 --> 00:18:49.500
<00:18:46.600>will <00:18:46.774>be <00:18:46.949>already <00:18:47.125>finished. <00:18:47.300>So <00:18:47.475>we <00:18:47.649>want <00:18:47.824>need <00:18:48.000>to

361
00:18:49.500 --> 00:18:51.500
<00:18:49.500>jump <00:18:49.780>out <00:18:50.060>and <00:18:50.340>all <00:18:50.620>this <00:18:50.900>magic.

362
00:18:53.200 --> 00:18:55.000
<00:18:53.200>We <00:18:53.550>could <00:18:53.900>use <00:18:54.250>when <00:18:54.600>all.

363
00:18:56.600 --> 00:19:00.300
<00:18:56.600>and <00:18:56.833>this <00:18:57.066>it <00:18:57.300>will <00:18:57.533>just <00:18:57.766>finish <00:18:58.000>one

364
00:18:59.300 --> 00:19:02.800
<00:18:59.300>of <00:18:59.533>all <00:18:59.766>of <00:19:00.000>the <00:19:00.233>tasks <00:19:00.466>you <00:19:00.700>provided

365
00:19:02.800 --> 00:19:04.100
<00:19:02.800>will <00:19:03.385>finish <00:19:03.969>so

366
00:19:05.200 --> 00:19:08.300
<00:19:05.200>here <00:19:05.550>we <00:19:05.900>can <00:19:06.250>use <00:19:06.600>the

367
00:19:13.400 --> 00:19:15.700
<00:19:13.400>here <00:19:13.633>we <00:19:13.866>we <00:19:14.100>can <00:19:14.333>use <00:19:14.566>that <00:19:14.800>result.

368
00:19:17.300 --> 00:19:20.300
<00:19:17.300>Because <00:19:17.500>we <00:19:17.700>know <00:19:17.899>that <00:19:18.100>the <00:19:18.300>operations <00:19:18.500>already <00:19:18.700>finished.

369
00:19:23.800 --> 00:19:27.400
<00:19:23.800>Okay, <00:19:24.080>so <00:19:24.360>we <00:19:24.639>focused <00:19:24.919>on <00:19:25.200>async

370
00:19:26.400 --> 00:19:30.300
<00:19:26.400>task. <00:19:26.750>We <00:19:27.100>also <00:19:27.450>we <00:19:27.800>all

371
00:19:29.300 --> 00:19:33.300
<00:19:29.300>the <00:19:29.649>time <00:19:30.000>returned <00:19:30.350>task, <00:19:30.700>but

372
00:19:32.300 --> 00:19:34.200
<00:19:32.300>we <00:19:33.700>could

373
00:19:35.100 --> 00:19:37.900
<00:19:35.100>Also <00:19:35.379>return <00:19:35.659>async <00:19:35.939>void. <00:19:36.219>It's <00:19:36.500>possible.

374
00:19:39.600 --> 00:19:43.100
<00:19:39.600>But <00:19:39.879>then <00:19:40.159>we <00:19:40.439>will <00:19:40.719>lose <00:19:41.000>ability

375
00:19:42.100 --> 00:19:45.600
<00:19:42.100>to <00:19:42.379>await <00:19:42.659>it. <00:19:42.939>So <00:19:43.219>we <00:19:43.500>lose

376
00:19:45.600 --> 00:19:49.000
<00:19:45.600>ability <00:19:45.879>to <00:19:46.159>to <00:19:46.439>observe <00:19:46.719>that <00:19:47.000>it.

377
00:19:50.400 --> 00:19:53.400
<00:19:50.400>Finishes <00:19:50.680>so <00:19:50.960>we <00:19:51.240>won't <00:19:51.520>operate <00:19:51.800>observe

378
00:19:53.400 --> 00:19:57.500
<00:19:53.400>the <00:19:53.750>exceptions <00:19:54.100>that <00:19:54.450>were <00:19:54.800>created

379
00:19:56.500 --> 00:19:59.600
<00:19:56.500>or <00:19:56.966>the <00:19:57.433>result <00:19:57.900>of

380
00:19:59.600 --> 00:20:00.300
<00:19:59.600>the <00:20:00.230>operation.

381
00:20:01.100 --> 00:20:02.600
<00:20:01.100>So <00:20:01.550>don't <00:20:02.000>use <00:20:02.449>it.

382
00:20:03.700 --> 00:20:06.400
<00:20:03.700>rule <00:20:03.980>number <00:20:04.260>three <00:20:04.540>avoid <00:20:04.820>async <00:20:05.100>void

383
00:20:08.700 --> 00:20:11.700
<00:20:08.700>There <00:20:08.840>is <00:20:08.980>a <00:20:09.120>new <00:20:09.260>kid <00:20:09.400>in <00:20:09.540>on <00:20:09.680>the <00:20:09.820>Block <00:20:09.960>value <00:20:10.100>task.

384
00:20:12.400 --> 00:20:15.500
<00:20:12.400>And <00:20:12.680>it <00:20:12.960>will <00:20:13.240>it's <00:20:13.520>very <00:20:13.800>similar

385
00:20:15.500 --> 00:20:17.800
<00:20:15.500>to <00:20:15.780>task <00:20:16.060>but <00:20:16.340>it's <00:20:16.620>a <00:20:16.900>struct.

386
00:20:18.900 --> 00:20:20.600
<00:20:18.900>So <00:20:19.133>it <00:20:19.366>doesn't <00:20:19.600>allocate <00:20:19.833>on <00:20:20.066>the <00:20:20.300>Heap.

387
00:20:21.200 --> 00:20:23.400
<00:20:21.200>So <00:20:21.480>it's <00:20:21.760>important <00:20:22.040>in <00:20:22.320>hot <00:20:22.600>paths.

388
00:20:24.700 --> 00:20:24.900
and

389
00:20:26.800 --> 00:20:29.200
<00:20:26.800>it's <00:20:26.975>great. <00:20:27.149>But <00:20:27.325>you <00:20:27.500>need <00:20:27.675>to <00:20:27.850>remember <00:20:28.024>there <00:20:28.200>are

390
00:20:29.200 --> 00:20:32.600
<00:20:29.200>some <00:20:29.666>rules <00:20:30.133>when <00:20:30.600>using

391
00:20:32.600 --> 00:20:34.500
<00:20:32.600>value <00:20:32.949>task <00:20:33.300>instead <00:20:33.649>of <00:20:34.000>task.

392
00:20:35.400 --> 00:20:36.900
<00:20:35.400>There <00:20:35.625>are <00:20:35.850>some <00:20:36.075>things <00:20:36.300>you <00:20:36.525>cannot <00:20:36.750>do.

393
00:20:37.700 --> 00:20:38.500
<00:20:37.700>you <00:20:38.420>cannot

394
00:20:39.400 --> 00:20:40.800
<00:20:39.400>await <00:20:39.820>it <00:20:40.240>multiple <00:20:40.659>times

395
00:20:41.900 --> 00:20:45.500
<00:20:41.900>You <00:20:42.250>cannot <00:20:42.600>use <00:20:42.950>it <00:20:43.300>concurrently.

396
00:20:44.500 --> 00:20:47.600
<00:20:44.500>It's <00:20:44.850>not <00:20:45.200>advised <00:20:45.550>and <00:20:45.900>you

397
00:20:47.600 --> 00:20:48.900
<00:20:47.600>cannot <00:20:48.185>block <00:20:48.770>it.

398
00:20:49.500 --> 00:20:50.700
<00:20:49.500>Because <00:20:49.860>you <00:20:50.220>will <00:20:50.580>Deadlock.

399
00:20:52.500 --> 00:20:53.000
<00:20:52.500>by <00:20:52.725>the <00:20:52.950>way

400
00:20:54.200 --> 00:20:57.900
<00:20:54.200>This <00:20:54.375>is <00:20:54.550>the <00:20:54.725>safest <00:20:54.900>way <00:20:55.075>to <00:20:55.250>block <00:20:55.425>async <00:20:55.600>operation.

401
00:20:58.900 --> 00:21:02.100
<00:20:58.900>It <00:20:59.180>will <00:20:59.460>observe <00:20:59.740>the <00:21:00.020>the <00:21:00.300>exceptions

402
00:21:01.100 --> 00:21:04.400
<00:21:01.100>it <00:21:01.333>will <00:21:01.566>return <00:21:01.800>the <00:21:02.033>result <00:21:02.266>correctly. <00:21:02.500>Everything

403
00:21:04.400 --> 00:21:05.000
<00:21:04.400>will <00:21:04.670>be <00:21:04.940>okay.

404
00:21:05.900 --> 00:21:08.600
<00:21:05.900>But <00:21:06.133>you <00:21:06.366>will <00:21:06.600>block <00:21:06.833>so <00:21:07.066>it's <00:21:07.300>it's

405
00:21:08.600 --> 00:21:10.300
<00:21:08.600>not <00:21:08.879>perfect. <00:21:09.159>But <00:21:09.439>sometimes <00:21:09.719>it's <00:21:10.000>necessary.

406
00:21:12.300 --> 00:21:14.600
<00:21:12.300>rule <00:21:12.533>number <00:21:12.766>two <00:21:13.000>remember <00:21:13.233>don't <00:21:13.466>block <00:21:13.700>frets

407
00:21:17.100 --> 00:21:19.800
<00:21:17.100>And <00:21:17.274>then <00:21:17.449>we <00:21:17.625>go <00:21:17.800>back <00:21:17.975>to <00:21:18.149>the <00:21:18.324>synchronization <00:21:18.500>context.

408
00:21:21.200 --> 00:21:24.500
<00:21:21.200>It <00:21:21.375>behaves <00:21:21.550>a <00:21:21.725>little <00:21:21.900>bit <00:21:22.075>differently <00:21:22.250>in <00:21:22.425>asking <00:21:22.600>world.

409
00:21:26.600 --> 00:21:28.700
<00:21:26.600>Here <00:21:26.949>if <00:21:27.300>you <00:21:27.649>await <00:21:28.000>something.

410
00:21:29.800 --> 00:21:32.800
<00:21:29.800>Remember <00:21:30.000>that <00:21:30.200>the <00:21:30.399>continuation <00:21:30.600>will <00:21:30.800>be <00:21:31.000>could <00:21:31.200>be

411
00:21:32.800 --> 00:21:34.300
<00:21:32.800>run <00:21:33.137>on <00:21:33.475>the <00:21:33.812>different <00:21:34.149>fret.

412
00:21:36.200 --> 00:21:39.400
<00:21:36.200>And <00:21:36.355>a <00:21:36.511>weight <00:21:36.666>will <00:21:36.822>capture <00:21:36.977>for <00:21:37.133>us <00:21:37.288>the <00:21:37.444>synchronization <00:21:37.600>context

413
00:21:39.400 --> 00:21:42.900
<00:21:39.400>and <00:21:39.680>we <00:21:39.960>will <00:21:40.240>continue <00:21:40.520>this <00:21:40.800>method

414
00:21:42.900 --> 00:21:45.300
<00:21:42.900>with <00:21:43.366>synchronization <00:21:43.833>context <00:21:44.300>that

415
00:21:45.300 --> 00:21:47.900
<00:21:45.300>we <00:21:45.649>were <00:21:46.000>before <00:21:46.350>the <00:21:46.700>await.

416
00:21:50.300 --> 00:21:54.000
<00:21:50.300>If <00:21:50.440>you <00:21:50.580>don't <00:21:50.720>want <00:21:50.860>this <00:21:51.000>Behavior, <00:21:51.139>you <00:21:51.280>can <00:21:51.419>use <00:21:51.560>configure <00:21:51.700>await

417
00:21:53.000 --> 00:21:54.600
false.

418
00:21:55.200 --> 00:21:58.700
<00:21:55.200>It's <00:21:55.375>very <00:21:55.550>important <00:21:55.725>in <00:21:55.900>libraries <00:21:56.075>that <00:21:56.250>that <00:21:56.425>targets <00:21:56.600>multiple

419
00:21:58.700 --> 00:22:01.700
<00:21:58.700>different <00:21:59.166>environments. <00:21:59.633>So <00:22:00.100>it

420
00:22:01.700 --> 00:22:03.500
<00:22:01.700>will <00:22:02.166>be <00:22:02.633>environment <00:22:03.100>agnostic.

421
00:22:04.300 --> 00:22:07.500
<00:22:04.300>And <00:22:04.440>here <00:22:04.580>we <00:22:04.720>will <00:22:04.860>go <00:22:05.000>back <00:22:05.139>to <00:22:05.280>the <00:22:05.419>default <00:22:05.560>synchronization <00:22:05.700>context.

422
00:22:09.600 --> 00:22:10.800
<00:22:09.600>There <00:22:09.815>are <00:22:10.032>a <00:22:10.248>lot <00:22:10.464>of <00:22:10.679>more.

423
00:22:12.900 --> 00:22:15.200
<00:22:12.900>Things <00:22:13.075>that <00:22:13.250>I <00:22:13.425>could <00:22:13.600>talk <00:22:13.775>about <00:22:13.950>but <00:22:14.125>there <00:22:14.300>is

424
00:22:15.200 --> 00:22:18.500
<00:22:15.200>simply <00:22:15.355>no <00:22:15.511>time. <00:22:15.666>I <00:22:15.822>encourage <00:22:15.977>you <00:22:16.133>to <00:22:16.288>look <00:22:16.444>and <00:22:16.600>look

425
00:22:18.500 --> 00:22:18.700
<00:22:18.500>them <00:22:18.680>up.

426
00:22:21.500 --> 00:22:25.300
<00:22:21.500>Yeah, <00:22:21.675>that's <00:22:21.850>me. <00:22:22.025>If <00:22:22.200>you <00:22:22.375>have <00:22:22.550>some <00:22:22.725>questions, <00:22:22.900>you

427
00:22:24.300 --> 00:22:27.400
<00:22:24.300>can <00:22:24.580>write <00:22:24.860>me <00:22:25.139>and <00:22:25.419>this <00:22:25.700>is

428
00:22:29.400 --> 00:22:29.700
<00:22:29.400>thank <00:22:29.670>you.

429
00:22:38.600 --> 00:22:42.500
<00:22:38.600>All <00:22:38.800>right. <00:22:39.000>Thank <00:22:39.199>you <00:22:39.399>very <00:22:39.600>much, <00:22:39.800>Greg. <00:22:40.000>Yeah.

430
00:22:43.400 --> 00:22:46.200
<00:22:43.400>So <00:22:43.600>we <00:22:43.800>have <00:22:44.000>a <00:22:44.200>few <00:22:44.400>questions <00:22:44.600>from <00:22:44.800>the

431
00:22:46.200 --> 00:22:46.600
audience.

432
00:22:48.300 --> 00:22:51.300
<00:22:48.300>Oh <00:22:48.475>one <00:22:48.649>person <00:22:48.825>wrote <00:22:49.000>two <00:22:49.175>questions <00:22:49.350>cool. <00:22:49.524>So <00:22:49.700>the

433
00:22:51.300 --> 00:22:54.500
<00:22:51.300>first <00:22:51.649>question <00:22:52.000>is <00:22:52.350>with.net <00:22:52.700>Frameworks.

434
00:22:54.500 --> 00:22:57.700
<00:22:54.500>We <00:22:54.850>used <00:22:55.200>configure <00:22:55.550>await <00:22:55.900>Falls

435
00:22:57.700 --> 00:23:01.000
<00:22:57.700>yes.net <00:22:59.100>Court

436
00:23:00.300 --> 00:23:03.900
<00:23:00.300>does <00:23:00.533>not <00:23:00.766>have <00:23:01.000>synchronization <00:23:01.233>context <00:23:01.466>anymore. <00:23:01.700>What

437
00:23:03.900 --> 00:23:06.200
<00:23:03.900>is <00:23:04.100>the <00:23:04.300>reason <00:23:04.500>that <00:23:04.700>this <00:23:04.900>method <00:23:05.100>is <00:23:05.300>still

438
00:23:06.200 --> 00:23:06.500
there?

439
00:23:07.400 --> 00:23:11.500
<00:23:07.400>Dotnet <00:23:07.750>core <00:23:08.100>doesn't <00:23:08.450>have <00:23:08.800>synchronization

440
00:23:10.500 --> 00:23:12.000
context.

441
00:23:12.600 --> 00:23:16.300
<00:23:12.600>but <00:23:13.300>some <00:23:14.000>Frameworks

442
00:23:15.300 --> 00:23:18.000
<00:23:15.300>have <00:23:15.649>for <00:23:16.000>example <00:23:16.350>Blazer <00:23:16.700>has

443
00:23:18.600 --> 00:23:21.200
<00:23:18.600>So <00:23:18.879>in <00:23:19.159>dotnet, <00:23:19.439>we <00:23:19.719>don't <00:23:20.000>have

444
00:23:21.200 --> 00:23:24.400
<00:23:21.200>indotment <00:23:21.550>framework <00:23:21.900>classic. <00:23:22.250>We <00:23:22.600>didn't

445
00:23:24.400 --> 00:23:28.300
<00:23:24.400>have <00:23:24.680>course <00:23:24.960>synchronization <00:23:25.240>context <00:23:25.520>but <00:23:25.800>all

446
00:23:27.300 --> 00:23:31.300
<00:23:27.300>those <00:23:28.000>and <00:23:28.700>Frameworks

447
00:23:30.300 --> 00:23:33.500
<00:23:30.300>had <00:23:30.649>their <00:23:31.000>own <00:23:31.350>centralization <00:23:31.700>context.

448
00:23:33.500 --> 00:23:37.500
<00:23:33.500>So <00:23:33.780>for <00:23:34.060>example <00:23:34.340>classical <00:23:34.620>asp.net <00:23:34.900>in

449
00:23:36.500 --> 00:23:40.100
<00:23:36.500>asp.net <00:23:36.733>core. <00:23:36.966>We <00:23:37.200>don't <00:23:37.433>have <00:23:37.666>synchronization <00:23:37.900>context.

450
00:23:41.300 --> 00:23:45.600
<00:23:41.300>But <00:23:41.533>we <00:23:41.766>had <00:23:42.000>before <00:23:42.233>and <00:23:42.466>the <00:23:42.700>synchronizing

451
00:23:45.600 --> 00:23:48.600
<00:23:45.600>context <00:23:45.833>in <00:23:46.066>for <00:23:46.300>example <00:23:46.533>asp.net <00:23:46.766>was <00:23:47.000>used

452
00:23:48.600 --> 00:23:51.400
<00:23:48.600>to <00:23:48.949>store <00:23:49.300>the <00:23:49.649>HTTP <00:23:50.000>client

453
00:23:51.400 --> 00:23:54.900
<00:23:51.400>dot <00:23:51.680>current <00:23:51.960>value <00:23:52.240>the <00:23:52.520>identity <00:23:52.800>the

454
00:23:54.900 --> 00:23:57.800
<00:23:54.900>culture <00:23:55.250>of <00:23:55.600>the <00:23:55.950>request. <00:23:56.300>So

455
00:23:57.800 --> 00:24:01.600
<00:23:57.800>it's <00:23:58.149>it <00:23:58.500>can <00:23:58.850>have <00:23:59.200>additional

456
00:24:00.600 --> 00:24:03.600
<00:24:00.600>additional <00:24:01.066>information. <00:24:01.533>But <00:24:02.000>in

457
00:24:03.600 --> 00:24:07.000
<00:24:03.600>dotnet <00:24:03.949>core <00:24:04.300>they <00:24:04.649>they <00:24:05.000>thought

458
00:24:06.100 --> 00:24:11.100
<00:24:06.100>that <00:24:06.379>it's <00:24:06.659>it's <00:24:06.939>not <00:24:07.219>it's <00:24:07.500>not

459
00:24:10.100 --> 00:24:13.700
<00:24:10.100>important <00:24:10.566>anymore. <00:24:11.033>It's <00:24:11.500>can

460
00:24:13.700 --> 00:24:16.900
<00:24:13.700>be <00:24:13.900>done <00:24:14.100>very <00:24:14.300>much <00:24:14.500>in <00:24:14.700>different <00:24:14.900>way <00:24:15.100>easier.

461
00:24:16.900 --> 00:24:19.600
<00:24:16.900>So <00:24:17.180>that's <00:24:17.460>why <00:24:17.740>in <00:24:18.020>dot <00:24:18.300>isp.net

462
00:24:19.600 --> 00:24:22.500
<00:24:19.600>core. <00:24:19.774>We <00:24:19.949>don't <00:24:20.125>have <00:24:20.300>yeah, <00:24:20.475>for <00:24:20.649>example <00:24:20.824>already. <00:24:21.000>Thank

463
00:24:22.500 --> 00:24:25.500
<00:24:22.500>you <00:24:22.733>for <00:24:22.966>the <00:24:23.200>clarification <00:24:23.433>another <00:24:23.666>one <00:24:23.900>what

464
00:24:25.500 --> 00:24:29.000
<00:24:25.500>are <00:24:25.700>fundamental <00:24:25.900>difference <00:24:26.100>is <00:24:26.300>between <00:24:26.500>task <00:24:26.700>classes <00:24:26.900>internet

465
00:24:28.600 --> 00:24:30.400
<00:24:28.600>core <00:24:29.300>and <00:24:30.000>framework.

466
00:24:32.300 --> 00:24:35.900
<00:24:32.300>What <00:24:32.475>are <00:24:32.649>the <00:24:32.825>what <00:24:33.000>are <00:24:33.175>fundamental <00:24:33.350>differences <00:24:33.524>between <00:24:33.700>task

467
00:24:35.900 --> 00:24:38.300
<00:24:35.900>classes <00:24:36.366>internet <00:24:36.833>core <00:24:37.300>don't

468
00:24:38.300 --> 00:24:42.600
<00:24:38.300>think <00:24:38.533>they <00:24:38.766>they <00:24:39.000>have <00:24:39.233>fundamental <00:24:39.466>differences. <00:24:39.700>I

469
00:24:41.600 --> 00:24:45.800
<00:24:41.600>never <00:24:41.949>heard <00:24:42.300>about <00:24:42.649>this. <00:24:43.000>I

470
00:24:45.800 --> 00:24:48.600
<00:24:45.800>I <00:24:46.080>always <00:24:46.360>thought <00:24:46.639>that <00:24:46.919>they <00:24:47.200>both

471
00:24:48.600 --> 00:24:52.400
<00:24:48.600>they <00:24:48.833>migrated <00:24:49.066>the <00:24:49.300>task <00:24:49.533>without <00:24:49.766>fundamental <00:24:50.000>changes.

472
00:24:54.200 --> 00:24:57.300
<00:24:54.200>Okay, <00:24:54.355>and <00:24:54.511>do <00:24:54.666>you <00:24:54.822>know <00:24:54.977>any <00:24:55.133>tools <00:24:55.288>to <00:24:55.444>visualize <00:24:55.600>this

473
00:24:57.300 --> 00:25:00.300
<00:24:57.300>Concepts <00:24:57.580>during <00:24:57.860>debugging? <00:24:58.139>Yes, <00:24:58.419>there <00:24:58.700>are

474
00:25:00.300 --> 00:25:01.200
<00:25:00.300>some <00:25:01.110>tools.

475
00:25:02.400 --> 00:25:07.600
<00:25:02.400>For <00:25:02.633>example <00:25:02.866>Visual <00:25:03.100>Studio <00:25:03.333>have <00:25:03.566>parallel <00:25:03.800>parallel

476
00:25:05.600 --> 00:25:08.900
<00:25:05.600>Stacks <00:25:07.000>something

477
00:25:08.900 --> 00:25:09.200
<00:25:08.900>like <00:25:09.170>this.

478
00:25:10.800 --> 00:25:13.500
<00:25:10.800>So <00:25:11.080>there <00:25:11.360>are <00:25:11.639>tools <00:25:11.919>it's <00:25:12.200>of

479
00:25:13.500 --> 00:25:17.600
<00:25:13.500>course, <00:25:13.675>it's <00:25:13.850>it's <00:25:14.025>harder <00:25:14.200>to <00:25:14.375>the <00:25:14.550>back <00:25:14.725>multifredded <00:25:14.900>applications.

480
00:25:17.600 --> 00:25:20.400
<00:25:17.600>So <00:25:17.833>yeah, <00:25:18.066>but <00:25:18.300>there <00:25:18.533>are <00:25:18.766>some <00:25:19.000>tools.

481
00:25:21.100 --> 00:25:24.600
<00:25:21.100>Yes <00:25:21.255>in <00:25:21.411>the <00:25:21.566>last <00:25:21.722>question. <00:25:21.877>Could <00:25:22.033>this <00:25:22.188>was <00:25:22.344>very <00:25:22.500>specific

482
00:25:24.600 --> 00:25:27.600
<00:25:24.600>could <00:25:24.833>this <00:25:25.066>async <00:25:25.300>approach <00:25:25.533>we <00:25:25.766>applied <00:25:26.000>if

483
00:25:27.600 --> 00:25:30.700
<00:25:27.600>we <00:25:27.800>are <00:25:28.000>working <00:25:28.199>with <00:25:28.399>Microsoft <00:25:28.600>Dynamics <00:25:28.800>Cloud <00:25:29.000>apps?

484
00:25:31.600 --> 00:25:34.600
<00:25:31.600>I <00:25:31.800>didn't <00:25:32.000>use <00:25:32.199>Microsoft <00:25:32.399>Dynamic <00:25:32.600>Cloud <00:25:32.800>apps <00:25:33.000>so

485
00:25:34.600 --> 00:25:36.400
<00:25:34.600>sorry. <00:25:35.066>I <00:25:35.533>don't <00:25:36.000>know.

486
00:25:37.500 --> 00:25:40.200
<00:25:37.500>Okay, <00:25:37.616>that's <00:25:37.733>all <00:25:37.850>the <00:25:37.966>questions <00:25:38.083>from <00:25:38.200>the <00:25:38.316>audience. <00:25:38.433>I <00:25:38.550>have <00:25:38.666>one <00:25:38.783>more <00:25:38.900>question.

487
00:25:40.200 --> 00:25:43.600
<00:25:40.200>So <00:25:40.400>this <00:25:40.600>is <00:25:40.800>a <00:25:41.000>pretty <00:25:41.200>like <00:25:41.400>not <00:25:41.600>that

488
00:25:43.600 --> 00:25:46.400
<00:25:43.600>common <00:25:43.800>topic <00:25:44.000>to <00:25:44.199>work <00:25:44.399>actually <00:25:44.600>work <00:25:44.800>in <00:25:45.000>and

489
00:25:46.400 --> 00:25:49.800
<00:25:46.400>what <00:25:46.575>is <00:25:46.750>a <00:25:46.925>like <00:25:47.100>a <00:25:47.275>real <00:25:47.450>world <00:25:47.625>the <00:25:47.800>biggest

490
00:25:49.800 --> 00:25:51.900
<00:25:49.800>challenge <00:25:49.975>when <00:25:50.149>you <00:25:50.325>use <00:25:50.500>this <00:25:50.675>in <00:25:50.850>the <00:25:51.024>real <00:25:51.200>world?

491
00:25:53.300 --> 00:25:56.200
<00:25:53.300>The <00:25:53.500>biggest <00:25:53.700>challenge <00:25:53.899>is <00:25:54.100>that's <00:25:54.300>it's <00:25:54.500>easy <00:25:54.700>to

492
00:25:56.200 --> 00:25:59.400
<00:25:56.200>mess <00:25:56.375>up. <00:25:56.550>So <00:25:56.725>it's <00:25:56.900>easy <00:25:57.075>to <00:25:57.250>for <00:25:57.425>example <00:25:57.600>block

493
00:25:59.400 --> 00:26:02.500
<00:25:59.400>the <00:25:59.575>Fret <00:25:59.750>use <00:25:59.925>dot <00:26:00.100>result <00:26:00.275>when <00:26:00.450>you <00:26:00.625>shouldn't <00:26:00.800>or

494
00:26:02.500 --> 00:26:05.600
<00:26:02.500>use <00:26:02.850>for <00:26:03.200>example <00:26:03.550>a <00:26:03.900>wait

495
00:26:05.600 --> 00:26:08.900
<00:26:05.600>in <00:26:05.879>instead <00:26:06.159>of <00:26:06.439>awaited. <00:26:06.719>So <00:26:07.000>it's

496
00:26:08.900 --> 00:26:11.000
<00:26:08.900>you <00:26:09.250>need <00:26:09.600>to <00:26:09.950>be <00:26:10.300>cautious.

497
00:26:11.900 --> 00:26:14.500
<00:26:11.900>But <00:26:12.133>when <00:26:12.366>you <00:26:12.600>know <00:26:12.833>the <00:26:13.066>rules <00:26:13.300>the

498
00:26:14.500 --> 00:26:17.200
<00:26:14.500>basic <00:26:14.850>rules <00:26:15.200>you <00:26:15.550>you <00:26:15.900>can

499
00:26:17.200 --> 00:26:20.200
<00:26:17.200>get <00:26:17.480>more <00:26:17.760>responsive <00:26:18.040>UI <00:26:18.320>apps <00:26:18.600>you

500
00:26:20.200 --> 00:26:23.500
<00:26:20.200>can <00:26:20.433>get <00:26:20.666>more <00:26:20.900>throughput <00:26:21.133>in <00:26:21.366>your <00:26:21.600>server

501
00:26:23.500 --> 00:26:24.900
<00:26:23.500>application. <00:26:23.920>So <00:26:24.340>it's <00:26:24.760>great.

502
00:26:25.900 --> 00:26:28.500
<00:26:25.900>Okay. <00:26:26.100>Thank <00:26:26.300>you <00:26:26.500>very <00:26:26.700>much. <00:26:26.900>Greg. <00:26:27.100>Give <00:26:27.300>it

503
00:26:28.500 --> 00:26:29.100
<00:26:28.500>up <00:26:28.770>for <00:26:29.040>Greg.