WEBVTT

1
00:04:35.850 --> 00:04:38.730
Михаил Непряхин: Так семь привет как видно смешно

2
00:04:39.330 --> 00:04:41.060
Михаил Непряхин: поставьте пожалуйста. Плюс,

3
00:04:47.990 --> 00:04:49.110
Михаил Непряхин: да Окей

4
00:04:59.470 --> 00:05:02.000
Михаил Непряхин: так сегодня сегодня план какой

5
00:05:02.140 --> 00:05:03.870
Михаил Непряхин: Сейчас ээ

6
00:05:04.330 --> 00:05:08.170
Михаил Непряхин: посмотрим на паттерны с гурутинными Каналами

7
00:05:09.100 --> 00:05:11.930
Михаил Непряхин: и Начнем же

8
00:05:12.650 --> 00:05:17.190
Михаил Непряхин: что-то Верхнего, уровня. Его изучать Вот Например Докер в губернаторы. Сегодня Начнем изучать

9
00:05:17.370 --> 00:05:19.970
Михаил Непряхин: ну точно Не То что изучать а

10
00:05:20.670 --> 00:05:25.020
Михаил Непряхин: как этим пользоваться и какой функционал Минимальный нам необходим

11
00:05:25.410 --> 00:05:27.070
Михаил Непряхин: для работы для жизни

12
00:05:29.260 --> 00:05:30.320
Михаил Непряхин: так

13
00:05:32.640 --> 00:05:47.820
Михаил Непряхин: значит ромного по точку в гоу не Так много важно, как бы знать синтаксис не настолько важно, знать интаксис как просто важно, понимать вот минимально как оно

14
00:05:48.550 --> 00:05:52.080
Михаил Непряхин: а устроено Какие вообще есть инструменты

15
00:05:52.200 --> 00:05:59.750
Михаил Непряхин: и как бы это все равно синтез там закрывать ну там не знаю что можно делать с закрытым каналом что можно делать

16
00:06:00.040 --> 00:06:00.820
Михаил Непряхин: а

17
00:06:00.930 --> 00:06:01.740
Михаил Непряхин: он и

18
00:06:01.940 --> 00:06:02.950
Михаил Непряхин: каким там

19
00:06:05.030 --> 00:06:16.450
Михаил Непряхин: что можно Делать в закрытом чтении писать что Будет и так далее это Не так важно как важно просто вот примерно понимать Использование в каких случаях что используется

20
00:06:17.220 --> 00:06:21.940
Михаил Непряхин: значит основные примитивы синхронизации которые у нас есть

21
00:06:22.530 --> 00:06:23.930
Михаил Непряхин: это

22
00:06:24.150 --> 00:06:26.310
Михаил Непряхин: как я уже говорил в этом юдекс

23
00:06:27.010 --> 00:06:35.130
Михаил Непряхин: основной ну то есть чтобы Избежать гонки данных если. Вдруг Мы из нескольких. Гурутин

24
00:06:36.860 --> 00:06:39.780
Михаил Непряхин: хотим, писать в одно, место,

25
00:06:40.990 --> 00:07:00.310
Михаил Непряхин: чтобы здесь не получилась гонка данных вот нужно нужен ютокс а Мюток смотрел как раз таки упорядочивая доступ к этой Области. Памяти и просто Одновременно две грутины к этой памяти не могут получить доступ они будут обязательно это делать по очереди с Помощью меткса. И тут может Быть крутил типа там

26
00:07:01.980 --> 00:07:03.180
Михаил Непряхин: десять тысяч

27
00:07:03.210 --> 00:07:16.650
Михаил Непряхин: просто если их будет очень много то сами понимаете это будет узким горлышком и бутылочным горошком и в общем-то ну. Вот Программа, просто очень медленно работать и как бы потеряется преимущество того что у вас эээ

28
00:07:16.650 --> 00:07:31.800
Михаил Непряхин: голос рутинами что у вас Несколько потоков потому что все убьется об это Место, Поэтому как бы да чтобы Избежать Гонки данных Можно использовать мюзикл. А еще Можно писать программы так Что Мы Несколько грутин не обращались к одной и той Же памяти

29
00:07:32.270 --> 00:07:36.930
Михаил Непряхин: ну потом Там например. Еще примерчики какие То будут

30
00:07:37.840 --> 00:07:42.310
Михаил Непряхин: а дальше значит следующий примитив это Воингруппа

31
00:07:46.640 --> 00:07:52.450
Михаил Непряхин: вы группа это просто счетчик просто счетчик для того чтобы понимать когда мы запустили

32
00:07:52.590 --> 00:07:54.550
Михаил Непряхин: сколько ты грузин

33
00:07:54.810 --> 00:07:55.840
Михаил Непряхин: Десять тысяч

34
00:07:57.540 --> 00:07:58.640
Михаил Непряхин: мы

35
00:07:59.500 --> 00:08:02.400
Михаил Непряхин: Хотим, знать когда они все закончатся

36
00:08:02.540 --> 00:08:07.320
Михаил Непряхин: допустим нам нельзя идти дальше Пока все бурутины не закончились

37
00:08:07.860 --> 00:08:08.800
Михаил Непряхин: Ммм

38
00:08:09.650 --> 00:08:18.150
Михаил Непряхин: Мы просто заводим вытгруппу такой счетчик и когда этот счетчик равен нулю То Мы понимаем все Грузины закончились можем идти дальше

39
00:08:19.400 --> 00:08:21.760
Михаил Непряхин: вот и канал

40
00:08:25.010 --> 00:08:27.310
Михаил Непряхин: канал Это

41
00:08:28.080 --> 00:08:30.020
Михаил Непряхин: что-то вот подобное

42
00:08:30.450 --> 00:08:39.750
Михаил Непряхин: вот как Бы есть какая То ячейка памяти Куда мы хотим, писать или кто то хочет читатель кто хочет писать есть мютекс

43
00:08:39.990 --> 00:08:47.080
Михаил Непряхин: и для того чтобы руками допустим отослать у нас чтобы вот руками эти очереди не писать

44
00:08:47.410 --> 00:08:50.930
Михаил Непряхин: у нас есть прямо Фест Класс объект

45
00:08:52.420 --> 00:08:58.030
Михаил Непряхин: канал то есть как бы Аналогов в других языках До появления каналов гол Не было

46
00:08:58.190 --> 00:09:09.600
Михаил Непряхин: и ну Сейчас там уже в других языках тоже типа кудрина Раз, то появилось но это Все таки не Фст вас объекты в этих языках а вот именно в голову это Ферст класс объект

47
00:09:10.350 --> 00:09:20.250
Михаил Непряхин: а Что как Бы да он Конечно там сложный Под капотом Но Тем Не Менее просто вы можете довольно легко синхронизировать несколько гортин

48
00:09:21.190 --> 00:09:25.430
Михаил Непряхин: вот и собственно говоря больше ничего и Нет

49
00:09:25.590 --> 00:09:32.670
Михаил Непряхин: То есть важно понимать что мы руками если, у Нас есть ядра процессора мы не поднимаем руками треды

50
00:09:32.730 --> 00:09:46.350
Михаил Непряхин: мы как бы декларативно говорим гол. Хотим? Десять тысяч потоков. Запустить а уж. Как там гошка раскидает это по ядрам это уже дело планировщика ну и соответственно если у нас этих ядер

51
00:09:46.490 --> 00:09:48.040
Михаил Непряхин: девяносто шесть

52
00:09:48.140 --> 00:09:55.670
Михаил Непряхин: то Голову. Эффективно раскидает Эти, бурутины равномерно по этим ядрам равномерно утилизируя все наши ресурсы

53
00:09:56.040 --> 00:10:03.730
Михаил Непряхин: то есть как бы если вот так вот посмотреть оно довольно таки как бы ну с точки, зрения абстракции, все очень классно сделано и все удобно

54
00:10:04.440 --> 00:10:06.820
Михаил Непряхин: и из того Что Мы еще Не смотрели Весь контекст

55
00:10:09.450 --> 00:10:19.530
Михаил Непряхин: но контекст это по Сути ну У него первое назначение это дедлайн какой-то поставить что вот гурутина должна работать,

56
00:10:19.890 --> 00:10:21.140
Михаил Непряхин: пять секунд

57
00:10:21.470 --> 00:10:22.270
Михаил Непряхин: ой

58
00:10:24.100 --> 00:10:26.650
Михаил Непряхин: значит гуртина должна работать, пять секунд

59
00:10:27.920 --> 00:10:29.750
Михаил Непряхин: Если за пять секунд она

60
00:10:30.190 --> 00:10:36.730
Михаил Непряхин: не отработала продолжает работать, просто закрывая Ее Принудительно то есть вот этот функционал

61
00:10:37.150 --> 00:10:38.490
Михаил Непряхин: а для контекста

62
00:10:38.770 --> 00:10:45.970
Михаил Непряхин: и то же самое мы можем это руками сделать когда у нас контекст проброшен а вообще в гол, принятый контекст, пробрасывать у всех картины

63
00:10:46.540 --> 00:10:58.890
Михаил Непряхин: и Мы можем руками сказать убейся типа ты нам, уже не нужна Там то есть вот Мы запустили в рутины да у нас же как бы должен быть какой то механизм какая то ручка чтобы сказать что. Все хватит закрывайся

64
00:10:59.210 --> 00:11:06.400
Михаил Непряхин: то есть когда Мы хотим, данные получить, Этой ручкой является, Канал Мы через Канал Эти данные можем получить, а когда нам

65
00:11:06.560 --> 00:11:13.920
Михаил Непряхин: Никакие данные Не надо получить Грузины просто Там работают Но Мы понимаем Уже смысл в ней Нет Мы Не, можем с помощью Контекста и сказать Убейся

66
00:11:14.580 --> 00:11:23.430
Михаил Непряхин: и еще там есть несколько функций у контекста но основные вот эти потом там контексту уделим больше Времени просто Сейчас я не вижу смысла в этом больше Времени уделять

67
00:11:23.430 --> 00:11:40.130
Михаил Непряхин: Сейчас. Цель. Просто и

68
00:11:40.220 --> 00:11:43.280
Михаил Непряхин: вот аа и там Еще это повторим

69
00:11:45.120 --> 00:11:46.100
Михаил Непряхин: так

70
00:11:48.070 --> 00:11:49.670
Михаил Непряхин: значит проон

71
00:11:50.110 --> 00:11:51.580
Михаил Непряхин: про каналы да

72
00:11:52.320 --> 00:11:53.730
Михаил Непряхин: там и

73
00:11:55.170 --> 00:11:56.710
Михаил Непряхин: как Можно использовать канал

74
00:11:57.900 --> 00:12:00.020
Михаил Непряхин: ну вот смотрите здесь насколько уборки

75
00:12:01.300 --> 00:12:09.300
Михаил Непряхин: а сигнтура. У него какая что он принимает это тут просто номер у оркера по сути название уоркера и каналу канал на запись

76
00:12:09.700 --> 00:12:17.040
Михаил Непряхин: то есть просто имея вот эту сигнатуру мы понимаем что этотворкер эта функция она принимает канал

77
00:12:17.170 --> 00:12:21.010
Михаил Непряхин: и в этот канал этотворкер будет писать

78
00:12:21.700 --> 00:12:25.080
Михаил Непряхин: это значит Что мы Можем создать этот самый канал

79
00:12:25.690 --> 00:12:27.110
Михаил Непряхин: и и

80
00:12:27.240 --> 00:12:40.110
Михаил Непряхин: читайте этот канал как, Обычный свайс то есть у нас форренч принимает канал пока канал открыт форренч будет крутиться когда канал закроется мы из циклов фор выйдем

81
00:12:40.660 --> 00:12:42.170
Михаил Непряхин: и соответственно

82
00:12:42.800 --> 00:12:46.720
Михаил Непряхин: вот как бы классический патруль Мы не создали этот канал

83
00:12:48.000 --> 00:12:52.830
Михаил Непряхин: а и читаем его можем прямо здесь же начать читать в грутине

84
00:12:55.800 --> 00:13:09.290
Михаил Непряхин: вот просто сразу, начинаем читать а Дальше уже там разбираемся как запустить бургер и так далее, ну так как здесь я хочу чтобы ну у меня, сразу ну чтобы слипы Никакие не Делать, вот я просто в конце цикл. Фор запускаю

85
00:13:09.630 --> 00:13:20.630
Михаил Непряхин: и соответственно я в нем кручусь как только канал закроется ну его здесь получается никто не закрывает да вот Поэтому как бы здесь у меня, просто бесконечный цикл

86
00:13:20.910 --> 00:13:24.090
Михаил Непряхин: вот а когда канал закроется я из него Выйду

87
00:13:24.270 --> 00:13:30.660
Михаил Непряхин: и дальше я запускаю здесь вот десять оркеров и в Эти, воркеры я передаю этот канал

88
00:13:31.080 --> 00:13:33.300
Михаил Непряхин: и каждый воркер

89
00:13:33.480 --> 00:13:36.620
Михаил Непряхин: что он сделает он спит секунду

90
00:13:37.020 --> 00:13:41.730
Михаил Непряхин: и дальше в канал записывает хеллоу фромборер

91
00:13:44.470 --> 00:13:45.570
Михаил Непряхин: как он работает

92
00:13:46.170 --> 00:13:48.540
Михаил Непряхин: ну и всяк расчет он так бесконечно будет работать

93
00:13:52.320 --> 00:13:56.900
Михаил Непряхин: значит если Рисовать этот патрон как оно выглядит

94
00:14:01.220 --> 00:14:02.630
Михаил Непряхин: значит у нас есть

95
00:14:02.740 --> 00:14:04.260
Михаил Непряхин: какой ты синхронный код

96
00:14:05.080 --> 00:14:07.040
Михаил Непряхин: и у нас задача

97
00:14:07.800 --> 00:14:09.400
Михаил Непряхин: а что-то распаралелить

98
00:14:09.770 --> 00:14:14.480
Михаил Непряхин: То есть мы понимаем что мы конечно можем здесь в циклифор крутиться

99
00:14:14.880 --> 00:14:19.770
Михаил Непряхин: ну например, нам надо сделать десять запросов

100
00:14:20.130 --> 00:14:22.150
Михаил Непряхин: к какому-то и

101
00:14:24.760 --> 00:14:30.410
Михаил Непряхин: десять запросов клипе мы конечно можем их по очереди сделать да но то есть один, запрос сделали а каждый запрос секунда,

102
00:14:30.620 --> 00:14:42.090
Михаил Непряхин: каждый запрос секунды можем вот делать по очереди но просто будут занимать десять, секунд все это дело то есть мы здесь десять секунд крутимся а потом результат получаем здесь

103
00:14:42.490 --> 00:14:43.490
Михаил Непряхин: печатаем

104
00:14:44.380 --> 00:14:49.240
Михаил Непряхин: вот но гол. Позволяет легко взять это дело, распаралелить

105
00:14:49.800 --> 00:14:59.260
Михаил Непряхин: и запустить э десять гурутин ну Там условно одна Грутина вторая Грутина третья Грутина четвертая ну десять

106
00:15:00.250 --> 00:15:02.580
Михаил Непряхин: и Мы создаем

107
00:15:03.190 --> 00:15:05.710
Михаил Непряхин: канал пробрасываем

108
00:15:05.880 --> 00:15:07.200
Михаил Непряхин: вовнутрь

109
00:15:08.290 --> 00:15:13.690
Михаил Непряхин: всех гортин этот канал ну и так далее канал это указатель

110
00:15:14.570 --> 00:15:16.730
Михаил Непряхин: То есть во всех грутинках, есть указатель

111
00:15:17.020 --> 00:15:19.330
Михаил Непряхин: все Грутины в этот канал пишут

112
00:15:20.210 --> 00:15:24.400
Михаил Непряхин: а Мы потом дальше здесь просто этот канал аа читаем

113
00:15:25.330 --> 00:15:26.510
Михаил Непряхин: и

114
00:15:27.250 --> 00:15:29.430
Михаил Непряхин: гонка данных не возникает

115
00:15:29.610 --> 00:15:36.900
Михаил Непряхин: то есть смотрите Одновременно в одну область памяти У Нас пишут десять бутин но гонка данных Не возникает потому Что там

116
00:15:37.240 --> 00:15:42.450
Михаил Непряхин: на ютаксах это все сделано грамотно и

117
00:15:42.740 --> 00:15:47.170
Михаил Непряхин: все десять. Бутин в него пишут параллельно

118
00:15:47.320 --> 00:15:58.600
Михаил Непряхин: ну конечно по очереди в один момент Времени, Срок только одна рутина какая-то Пишет автора ждет. И Тогда они нам По очереди пишут Там очень-очень много Оптимизаций признают как внутреннее устройство канала это просто том

119
00:15:59.050 --> 00:16:03.910
Михаил Непряхин: но с ума можно сойти Сколько Там оптимизации чтобы оно работало быстро к слову оно работает реально быстро

120
00:16:04.380 --> 00:16:12.700
Михаил Непряхин: и дальше Мы вот спокойненько, когда вот эта вот часть синхронная синхронная параллельная она закончилась мы здесь и

121
00:16:12.720 --> 00:16:24.620
Михаил Непряхин: и результат этот читаем и ну кто-то должен конечно канал когда-то закрыть чтобы мы из него, вышли но вот игрушечный, пример здесь без всего то есть вот он такой минимальный

122
00:16:25.840 --> 00:16:31.870
Михаил Непряхин: а тут тот он и нанесли минималистичный, синтаксис У меня в гол правда эти вещи Делать Очень приятным

123
00:16:33.410 --> 00:16:42.920
Михаил Непряхин: дальше что Еще из интересного значит смотрите есть удобные функции, Ну то есть вот когда со временем что-нибудь Связано

124
00:16:43.740 --> 00:16:47.900
Михаил Непряхин: значит Что У нас есть У нас есть функция тайм тик

125
00:16:48.400 --> 00:16:50.950
Михаил Непряхин: это диккер

126
00:16:51.190 --> 00:17:06.720
Михаил Непряхин: возвращает То есть вот эта функция тайм-тик она возвращает Канал она Возвращает Канал ведь он типизирован только на Чтение потому что Стрелка Слева от ключевого своего. Чен и он Возвращает время

127
00:17:06.910 --> 00:17:18.589
Михаил Непряхин: короче говоря Удобно Так Делать когда У вас Бесконечный. Цикл и вы хотите. Какой-то ну. Условно Уркер который каждую Секунду будет эээ Тикать

128
00:17:18.839 --> 00:17:21.319
Михаил Непряхин: ну. Или не секунду что угодно Можно сделать

129
00:17:23.109 --> 00:17:26.260
Михаил Непряхин: вот значит Можно сделать таймер

130
00:17:26.589 --> 00:17:42.140
Михаил Непряхин: таймер это когда вам не нужно в цикле что То бесконечно вам просто надо чтобы оно сработало то есть вот дедлайны через таймеры Тоже делаются значит вы делаете от нее таймер говорите через Сколько он должен Сработать

131
00:17:42.580 --> 00:17:44.830
Михаил Непряхин: и этот канал

132
00:17:46.280 --> 00:17:56.120
Михаил Непряхин: сработает на чтение ровно через это время сколько вы указали один Раз он заработает вот потом мы его должны использовать и прибрать обязательно заступать

133
00:17:58.940 --> 00:18:13.050
Михаил Непряхин: То же самое Э можно Сделать вот Таким способом То Есть вот Это! Вот все можно Сделать одной строчкой автор То Есть Если посмотреть что Там в авторе просто нью, Таймер Возвращается отце, и сразу Канал

134
00:18:13.050 --> 00:18:20.530
Михаил Непряхин: и из Него Оттекается Раньше была проблема что надо Было обязательно закрывать ну вот видите вот вот эта штука

135
00:18:20.530 --> 00:18:36.430
Михаил Непряхин: чтобы ресурсы не утекали Но по фиксили сверхсоедини двадцать три и

136
00:18:36.440 --> 00:18:38.320
Михаил Непряхин: значит вот сделали вы канал

137
00:18:38.410 --> 00:18:39.950
Михаил Непряхин: не буферазированный

138
00:18:40.250 --> 00:18:48.080
Михаил Непряхин: с пустой структурой здесь канал который возвращает Одну структуру он не буффризированный то есть там Нет буфера

139
00:18:48.590 --> 00:18:52.550
Михаил Непряхин: значит и в Селекте вы читаете Этот канал

140
00:18:53.480 --> 00:18:56.360
Михаил Непряхин: а допустим вы Там делаете запрос какой-то

141
00:18:57.130 --> 00:19:03.430
Михаил Непряхин: магурутина запустили эта грутина делает запрос куда-то во внешние пять он медленный

142
00:19:03.540 --> 00:19:08.270
Михаил Непряхин: и вы ставите дедлайн вы говорите значит короче пять секунд я Жду,

143
00:19:08.450 --> 00:19:10.140
Михаил Непряхин: если за пять секунд

144
00:19:10.640 --> 00:19:12.360
Михаил Непряхин: а эта апе не ответит,

145
00:19:12.580 --> 00:19:17.170
Михаил Непряхин: я не получу ничего в канале То я пишу тайм-аут Иду дальше

146
00:19:18.240 --> 00:19:20.450
Михаил Непряхин: и в общем-то Вот Контекстом

147
00:19:20.850 --> 00:19:31.220
Михаил Непряхин: По Сути То же самое делает То что, будет руками Не писать это то же самое есть в контексте, ну про контекст потом Поговорим вот и Ну Реально как бы вот использоваться Две вещи

148
00:19:31.220 --> 00:19:41.590
Михаил Непряхин: популярные значит когда надо один Раз что-то Вот в селе где-то обычно Используется тайм Автор когда просто Вот канал через Пять секунд Должен Вернуть какое-то время

149
00:19:41.940 --> 00:19:47.950
Михаил Непряхин: и вторая версия это вторая штука это тикер который просто тикает Бесконечный цикл

150
00:19:48.310 --> 00:19:51.010
Михаил Непряхин: то есть вы таймер тикер рядом удобной штуки

151
00:19:51.240 --> 00:19:53.250
Михаил Непряхин: их нужно знать

152
00:19:55.770 --> 00:19:58.570
Михаил Непряхин: так и его значит пропаторные

153
00:19:59.260 --> 00:20:04.540
Михаил Непряхин: ну вообще как бы есть Вот значит есть

154
00:20:05.350 --> 00:20:12.800
Михаил Непряхин: видосик Еще мало очень пропаторный что там с много с Этими Каналами что Можно Найти

155
00:20:23.550 --> 00:20:37.360
Михаил Непряхин: короче ладно У бога все показать Убовна Есть видео где Там вот про паторные но реально как бы Если вы начинаете на каналах лепить какие-то паттерны вы прямо очень сильно усложняете код

156
00:20:37.480 --> 00:20:43.940
Михаил Непряхин: и Поэтому Э ну какие То сложные патроны на каналах в рутинах лучше. Не надо делать

157
00:20:44.830 --> 00:20:45.810
Михаил Непряхин: тайоме

158
00:20:48.200 --> 00:20:48.900
Михаил Непряхин: т д

159
00:20:49.160 --> 00:20:52.580
Михаил Непряхин: Плагин с прокси Уличный

160
00:20:53.120 --> 00:21:00.680
Михаил Непряхин: вот Реально если Мы посмотрим что вообще обычно вы хотите. Делать с каналами и гуртинами

161
00:21:00.940 --> 00:21:02.960
Михаил Непряхин: это выглядит следующим образом

162
00:21:03.530 --> 00:21:07.080
Михаил Непряхин: вообще всего четыре таких. Основных кейса Использования

163
00:21:07.290 --> 00:21:08.470
Михаил Непряхин: значит первый

164
00:21:09.490 --> 00:21:10.520
Михаил Непряхин: и это

165
00:21:11.190 --> 00:21:15.850
Михаил Непряхин: вы ну. Вы стесь на огромный код и вы понимаете

166
00:21:15.970 --> 00:21:18.210
Михаил Непряхин: что вы хотите, что то сделать

167
00:21:20.090 --> 00:21:37.690
Михаил Непряхин: э в многопоточке ну или не много по точке а синхронно то у нас как бы и так. Всегда все синхронно да Но вот если у вас просто гомак бокс один то Будет просто синхронно а если больше то будет еще и синхронно

168
00:21:37.870 --> 00:21:39.710
Михаил Непряхин: или скучно как параллельно

169
00:21:40.020 --> 00:21:45.120
Михаил Непряхин: а вы запускаете, э гурутину Там одну

170
00:21:45.390 --> 00:21:46.870
Михаил Непряхин: а или десять,

171
00:21:47.390 --> 00:21:50.680
Михаил Непряхин: и дальше продолжаете, работу

172
00:21:51.140 --> 00:22:07.590
Михаил Непряхин: то есть вот оно отработало и вы дальше работаете оно обычно Всегда так то есть как бы там какого-то в библиотеках там очень Много чего можно увидеть люди много разные придумывают на гурутинных и каналах вот так вот в реальной жизни что, вам нужно это вот обычно вот так вот

173
00:22:08.170 --> 00:22:17.380
Михаил Непряхин: значит второй вариант это когда вы так распознанным Человеком покуда по Порядку. Сейчас посмотреть про мир был Входе и начинал

174
00:22:17.550 --> 00:22:21.760
Михаил Непряхин: значит и

175
00:22:22.220 --> 00:22:24.270
Михаил Непряхин: какой то поток вот он идет,

176
00:22:25.120 --> 00:22:26.340
Михаил Непряхин: входных данных

177
00:22:26.540 --> 00:22:28.590
Михаил Непряхин: Поэтому вы делаете,

178
00:22:28.870 --> 00:22:29.820
Михаил Непряхин: канал

179
00:22:30.420 --> 00:22:33.910
Михаил Непряхин: и передаете, его ну в те же самые десять бурутин

180
00:22:34.660 --> 00:22:47.510
Михаил Непряхин: и вас не интересует какой там результат либо лишь бы ошибок не было даже если ошибки есть они там в блоге запишутся и все и идете дальше то есть вы передаете этот канал в эти десять бурутин

181
00:22:47.750 --> 00:23:01.860
Михаил Непряхин: и допустим в канале Канал тоже кто-то Пишет ну там не знаю как в канаву допустим попадет десять тысяч сообщений и вот эти десять грутин параллельно. Их перемен обработают

182
00:23:03.070 --> 00:23:08.600
Михаил Непряхин: ну третий вариант когда у вас есть и входные данные и выходные данные вам Тоже, важны

183
00:23:09.630 --> 00:23:12.840
Михаил Непряхин: Поэтому вы также спускаете эти десять грутин

184
00:23:15.360 --> 00:23:32.650
Михаил Непряхин: и вы в Канал вот в этот вот пишете эти десять минут пробрасываете оба. Канала в гурутины. В канал вы в этот пишете эти гурутины. Его читают а результат который они получают они пишут выходной Канал и этот выходной Канал вы здесь читаете

185
00:23:33.060 --> 00:23:48.790
Михаил Непряхин: ну и четвертый вариант это когда у вас выходных данных нет но есть выходные данные Вы делаете этот выходной Канал Аут передаете его в Эти десять. Гортин Ну, Тут в общем-то Всегда Новый Канал Передаем в грутины чтобы Не Могли. С Ним что-то сделать

186
00:23:48.790 --> 00:23:58.490
Михаил Непряхин: а дальше вы здесь этот Канал опять же Читаете То есть У вас Нет выходных данных Для грузии но грутины что, то какую то работу делают, и выходные данные пишут и вы их читаете

187
00:23:58.740 --> 00:24:16.330
Михаил Непряхин: и в общем-то вот эти кейсы и

188
00:24:16.610 --> 00:24:20.380
Михаил Непряхин: вот и в коде если посмотреть как это выглядит

189
00:24:21.410 --> 00:24:27.930
Михаил Непряхин: так ну вот смотрите у нас везде син группы будут потому, что. Без воен групп и

190
00:24:28.160 --> 00:24:29.460
Михаил Непряхин: нунь

191
00:24:29.880 --> 00:24:39.300
Михаил Непряхин: нам, либо спать придется либо что-то изобретать свои военные группы может вы их группа нам, дает возможность вот здесь вот

192
00:24:39.770 --> 00:24:41.580
Михаил Непряхин: а не ждать лишнего времени

193
00:24:41.970 --> 00:24:48.720
Михаил Непряхин: как только все гуртины отработают вот они тут, запускаются вот одну, штуку здесь Запускают Запускают одну, Картину и жду

194
00:24:49.290 --> 00:24:54.570
Михаил Непряхин: и я здесь сразу узнаю как только Она закроется и пойду дальше

195
00:24:54.750 --> 00:25:06.260
Михаил Непряхин: а Что вот Что я здесь делаю ну паттер началудобен и Тем Что смотрите сделаю здесь да и сразу у меня здесь ворот не запустится, сделаю десять тысяч десять тысяч бротин запустится, сделаю один Но одна, грудь не запустится,

196
00:25:06.480 --> 00:25:10.330
Михаил Непряхин: вот и это все Будет Продолжать работать То есть вот этим удобен этот патер

197
00:25:10.950 --> 00:25:12.030
Михаил Непряхин: он

198
00:25:12.160 --> 00:25:20.380
Михаил Непряхин: значит инкриминичу здесь в Войнупу счетчик, и передаю сразу же указатель внутрь воркера

199
00:25:20.490 --> 00:25:38.530
Михаил Непряхин: и название бургера передаю просто какая-то Грутина по очереди вот эта. Вот Конвертация У Меня, эн это инт я его конвертирую, в старингу и конфинирую с Гурутина горо тин горучи надо было назвать

200
00:25:39.920 --> 00:25:42.830
Михаил Непряхин: так вот и даже запускается воркер

201
00:25:43.460 --> 00:25:56.840
Михаил Непряхин: значит в диффере здесь сразу делаю дан то есть как, только бурутина запустится чтобы вот этот счетчик Внутри он минус один сделал чтобы я здесь потом этот ну Увидел что Она завершилась

202
00:25:57.250 --> 00:26:08.480
Михаил Непряхин: ну и ничего Не делаю пишу Что я начинаю работать потом сплю Секунду Допустим эта Амуляция как Будто я Иду куда-то По какому-то Апе ну и пешу что завершилась Работа.

203
00:26:09.330 --> 00:26:10.660
Михаил Непряхин: А

204
00:26:11.510 --> 00:26:13.320
Михаил Непряхин: таргнуть ездим

205
00:26:13.800 --> 00:26:20.790
Михаил Непряхин: Вот значит ночам работать втин ноль секунд и сплю потом аа завершил работать если, мне надо их десять.

206
00:26:21.090 --> 00:26:22.410
Михаил Непряхин: В одно, будет

207
00:26:22.530 --> 00:26:25.820
Михаил Непряхин: будет десять. Собственно энтони Одновременно

208
00:26:27.900 --> 00:26:33.590
Михаил Непряхин: индийцы запустились начали. У себя спать на секунду все поспали и потом все завершились

209
00:26:36.670 --> 00:26:37.490
Михаил Непряхин: вот

210
00:26:40.380 --> 00:26:49.430
Михаил Непряхин: дальше когда у нас таки есть входные данные когда мы хотим, что-то этим грузиям передать тогда используется такой паттерн

211
00:26:49.930 --> 00:27:02.030
Михаил Непряхин: ну вокеры Я тут назвал По порядку и би-би-си и просто для того чтобы они тут У Меня все в одном спейсе чтобы идеюшка как Раз, меня подчеркивала так чтобы не было вот Поэтому и знала тут би

212
00:27:02.370 --> 00:27:05.280
Михаил Непряхин: так ну создаем Мы таки этот канал

213
00:27:05.390 --> 00:27:07.160
Михаил Непряхин: в которой Мы будем Писать

214
00:27:07.340 --> 00:27:11.630
Михаил Непряхин: ин ну все даже дело не буффризированные вы можете буферазированное дело без разницы

215
00:27:13.220 --> 00:27:30.120
Михаил Непряхин: а обычно не буффризированные Делают когда они хотят чтобы при падении приложения что-то потерялось потому что здесь ничего Не хранится и в один момент времени Вы обрабатываете только какое-то однозначение потому что если, Вы сделаете не знаю. Там десять. Тысяч

216
00:27:30.790 --> 00:27:44.190
Михаил Непряхин: вот так вот и если Вдруг у вас инстанция упадет то там же в буфере будут вот эти десять тысяч Раз,

217
00:27:44.880 --> 00:27:51.900
Михаил Непряхин: вот то делает просто не буффризированный там по скорости он чуть-чуть медленнее получается но не критично

218
00:27:52.450 --> 00:27:58.860
Михаил Непряхин: вы группа понятно как без нее мы ж потом должны подождать ээ узнать что мы завершили работу

219
00:27:59.230 --> 00:28:03.880
Михаил Непряхин: вот э ну Понятно, это наш хвеейн групп эт

220
00:28:04.900 --> 00:28:12.120
Михаил Непряхин: ну ведь я здесь даже не в цикли Делают потому что, одну грудью только запускаю если, бы тут, надо было ну и запустить

221
00:28:12.500 --> 00:28:15.540
Михаил Непряхин: много грутин я бы сделал цикл, фор

222
00:28:16.330 --> 00:28:20.290
Михаил Непряхин: вот и то же самое пробрасывая внутрь в европу

223
00:28:21.390 --> 00:28:26.620
Михаил Непряхин: Маркер запустился дальше я в него пишу привет

224
00:28:27.010 --> 00:28:32.930
Михаил Непряхин: ну и все дальше я не иду пока он не будет прочитан он здесь будет прочитан потом я напишу как, дела

225
00:28:33.160 --> 00:28:35.720
Михаил Непряхин: он опять, прочитается и потом напишу пока

226
00:28:36.230 --> 00:28:38.710
Михаил Непряхин: вот а что он тут, вообще Делает маркер

227
00:28:39.130 --> 00:28:46.310
Михаил Непряхин: ну. Понятно дело то же самое Выт группу он минус один Делает уж и данн видите это То Эд минус Один

228
00:28:46.620 --> 00:28:47.980
Михаил Непряхин: чучечку

229
00:28:48.780 --> 00:28:58.190
Михаил Непряхин: грэйнджеры читаю этот Входящий канал я его действительно противизировал, только на Чтение То есть если вдруг Мы здесь захотим что-то записать в канал

230
00:29:04.330 --> 00:29:17.030
Михаил Непряхин: о ну Не скомпелируется код потому что Мы протизировали только на чтение а я тут пишу вот если, бы Не было Эти пизацы знаете Раз Я могу записать Но

231
00:29:17.030 --> 00:29:28.990
Михаил Непряхин: У Меня здесь Идея уоркера в Том что Воркер только Пишет ой только читает из этого канала Поэтому чтобы не Совершить ошибку и разрешили защиты от Дурака тут Можно сделать штуку типизацию Это кстати очень классная Фича

232
00:29:29.690 --> 00:29:39.620
Михаил Непряхин: Прям Вот Рекомендую ей пользоваться потому что многие Не пользуются потому что ну как Бы и без нее работает Но Это дополнительная Строгость. То есть Ммм более Строгая этипизация получается,

233
00:29:39.820 --> 00:29:56.040
Михаил Непряхин: Вот Читаем Мы этот Наш канал и

234
00:29:56.040 --> 00:30:01.170
Михаил Непряхин: куда-нибудь записываем ну я Не знаю Или в кафку Мы записываем что-нибудь такое вот

235
00:30:01.530 --> 00:30:02.690
Михаил Непряхин: потом когда

236
00:30:02.980 --> 00:30:07.700
Михаил Непряхин: канал ин Закроется мы из Этой Цепо Фор выйдем

237
00:30:08.140 --> 00:30:10.800
Михаил Непряхин: напишем шоу картина, завершила работу

238
00:30:10.920 --> 00:30:15.280
Михаил Непряхин: то есть ведь, нужно канал закрыть так где мы канал закрываем

239
00:30:16.600 --> 00:30:19.960
Михаил Непряхин: вот мы записали все в канал потом канал закрыли

240
00:30:20.680 --> 00:30:23.820
Михаил Непряхин: соответственно вот из этого цикла формы из бутины выйдем

241
00:30:24.920 --> 00:30:34.310
Михаил Непряхин: ну и выйдем из уборки и завершим вот Эту вот грурутину дальше у нас здесь счетчик, разблокируется и мы напишем что Программа завершена

242
00:30:35.450 --> 00:30:40.740
Михаил Непряхин: вот смотрите Мы тут каждую секунду спим привет как дела пока вот

243
00:30:41.440 --> 00:30:44.100
Михаил Непряхин: аа, и буртин завершила работу

244
00:30:44.830 --> 00:30:47.650
Михаил Непряхин: так а если Мы сделаем буфлизацию мать

245
00:30:51.440 --> 00:30:58.860
Михаил Непряхин: Мы сразу это все запишем и сразу закроем каналы будем! Ждать! То есть у нас э увы

246
00:30:59.070 --> 00:31:05.580
Михаил Непряхин: у нас видите вот здесь пока мы все прочитали и гурутина завершила работу

247
00:31:06.100 --> 00:31:11.630
Михаил Непряхин: а ну у меня здесь нету никакого сообщения да да Мы здесь разницы Не, увидим вот То, же самое

248
00:31:13.620 --> 00:31:15.050
Михаил Непряхин: да то же самое

249
00:31:15.660 --> 00:31:18.500
Михаил Непряхин: вот но ведет оно как бы

250
00:31:18.780 --> 00:31:20.170
Михаил Непряхин: себя страну по Разному

251
00:31:20.570 --> 00:31:26.770
Михаил Непряхин: то есть когда вот У нас Есть буферизация Мы все бамбам-быстро записали закрыли ждем

252
00:31:27.310 --> 00:31:28.990
Михаил Непряхин: а когда бухризации нет

253
00:31:29.660 --> 00:31:31.430
Михаил Непряхин: Мы записали

254
00:31:31.570 --> 00:31:32.670
Михаил Непряхин: ждем

255
00:31:32.880 --> 00:31:35.730
Михаил Непряхин: пока не прочитают здесь здесь прочитали

256
00:31:35.910 --> 00:31:49.370
Михаил Непряхин: мысли снова записали Там пять прочитали и снова записали там опять прочитали мы закрыли канал ждем То есть вот этот способ, он такое более

257
00:31:50.360 --> 00:31:51.900
Михаил Непряхин: Кот получается.

258
00:31:52.030 --> 00:32:04.360
Михаил Непряхин: Ну конечно даже не надо как, Это объяснить более Синхронно Что ли как-то получается. Что как Бы Мы Не теряем Никакие сообщения вот прямо одно вот этот Сейчас в работе, Вот пока привет не прочитали с той стороны

259
00:32:04.450 --> 00:32:16.400
Михаил Непряхин: Мы как дела не шлем потому что а вдруг ошибка нам. Руку Там привет не будет прочитано зачем нам типа Это на М-м новое Засывать То Есть Это как бы такой

260
00:32:16.400 --> 00:32:27.800
Михаил Непряхин: можно сказать конит То Есть когда вот он был это сообщение, прочитано с той стороны Мы такие ага закомители типа Там, оно было прочитано доставлено отправляем следующее

261
00:32:28.080 --> 00:32:36.480
Михаил Непряхин: вот эээ вот эти вот небуфлизированные каналы народ не любит потому что с ними работа чуть сложнее

262
00:32:36.730 --> 00:32:38.350
Михаил Непряхин: и

263
00:32:38.360 --> 00:32:56.850
Михаил Непряхин: ну и

264
00:32:57.620 --> 00:33:05.640
Михаил Непряхин: значит другой патруль когда у нас есть и входящие и выходящие данные и выходящие данные Мы хотим? Отслеживать читать

265
00:33:06.380 --> 00:33:07.590
Михаил Непряхин: значит

266
00:33:07.820 --> 00:33:09.170
Михаил Непряхин: вот смотрите

267
00:33:09.650 --> 00:33:14.330
Михаил Непряхин: сразу, Создаем канал на Чтение, то есть

268
00:33:14.680 --> 00:33:18.910
Михаил Непряхин: выходящий канал Ну Резал ты типа резонанс можно Еще назвать вам было

269
00:33:19.050 --> 00:33:28.730
Михаил Непряхин: сразу, Пускаем гутину и Читаем этот канал ну естественно пока, в Него никто ничего не пишет Мы здесь просто будем ждать Пока Там кто-то появится

270
00:33:29.180 --> 00:33:41.710
Михаил Непряхин: дальше дальше То же, самое как к предыдущему паттернию. Мы создаем канал на Запись лет группа Здесь Тоже, Все то же самое только Мы Воркер передаем сразу и Канал и на Чтение и на запись

271
00:33:42.520 --> 00:33:56.550
Михаил Непряхин: пишем также Сообщения Канал Тоже, непухаризированный так что они тут по одному будет бомба памяти потом закрываем кана на чтение Ждем Пока сигрутины закончатся, закрываем Канал на запись

272
00:33:56.690 --> 00:34:05.610
Михаил Непряхин: и вот эта гортина закончится потому что видите она вот здесь когда вот мы закроем кона аут ну вот из этих крути не будем то есть, Если, мы здесь не закроем канал вот Так вот

273
00:34:05.730 --> 00:34:08.820
Михаил Непряхин: то эта грутина потечет потому что, она не будет Закрыта

274
00:34:11.750 --> 00:34:15.010
Михаил Непряхин: а ну и все дальше Пишут Прямо завершена

275
00:34:15.550 --> 00:34:21.730
Михаил Непряхин: и здесь смотрите Ворка как устроена значит У нас типизированный канал на Чтение

276
00:34:21.909 --> 00:34:27.469
Михаил Непряхин: типазированный канал на запись ну вы группа понятна только для того чтобы ее потом отпустить

277
00:34:28.210 --> 00:34:34.030
Михаил Непряхин: вот и читаем читаем канал на Чтение значит получаем сообщения

278
00:34:34.110 --> 00:34:49.030
Михаил Непряхин: ну Там как-то их обработали куда-то послали получили ответ как будто театр то же самое что получил. На чтение записывая в результирующий канал ну как будто бы это было ну вот я добавляю что обработано да ждем секунду

279
00:34:49.179 --> 00:35:00.580
Михаил Непряхин: и пока у нас канал ин не закрыт мы ее читаем читаем читаем Потом, его закрывают и Мы выходим Из этого цикла говорим что бурутина завершена ну и все уже дальше

280
00:35:01.040 --> 00:35:03.000
Михаил Непряхин: вот и

281
00:35:04.690 --> 00:35:08.130
Михаил Непряхин: ну да в общем-то работает предсказуемым образом

282
00:35:08.790 --> 00:35:15.460
Михаил Непряхин: короче говоря таким образом вы можете так видеть кода для такой и сложной программы все равно немного

283
00:35:15.460 --> 00:35:30.470
Михаил Непряхин: и по Большому Счету Это, очень близко к Продакшн-конду и

284
00:35:30.470 --> 00:35:35.250
Михаил Непряхин: ну на собеседник также Просят написать Пуворкеров да ну вот это есть Пунктыров но только

285
00:35:35.250 --> 00:35:39.490
Михаил Непряхин: с разницей, в том что вот здесь будет цикл форд спрос На гулять сюда церковь

286
00:35:39.730 --> 00:35:52.000
Михаил Непряхин: ну и Сколько Хотите, вы этихворкера запустить десять Хотите, запустить делать вот так вот и внутри оказывается, вот это Что, тут, и было вот и тогда у вас получается в десяти экземплярах но вот это все

287
00:35:52.460 --> 00:36:03.000
Михаил Непряхин: То есть ну тут смысла Нет потому что у меня три Сообщения только было послано да но я в десяти го рутинах это обработал как видеть ничего не поменялось потому что у меня

288
00:36:03.940 --> 00:36:12.530
Михаил Непряхин: а синхронно как бы здесь я По очереди пишу вернее ну у меня канал непуфелязированный вот вот если я Сейчас сделаю буфер да

289
00:36:12.840 --> 00:36:20.520
Михаил Непряхин: этого три хотя бы вот Сейчас у меня здесь будет разнобой вот Сейчас я не получу здесь провет, как Дела пока Нет пока

290
00:36:20.640 --> 00:36:23.920
Михаил Непряхин: короче разнобой получился.

291
00:36:24.420 --> 00:36:28.390
Михаил Непряхин: Нету вот этого Вон тут вообще по-разному, Получилось

292
00:36:28.740 --> 00:36:36.980
Михаил Непряхин: вот а если, я хочу вот этот порядок даже во множестве грутин то я его просто делаю Не буффризированной

293
00:36:37.190 --> 00:36:38.310
Михаил Непряхин: и все

294
00:36:38.540 --> 00:36:40.130
Михаил Непряхин: и таким образом

295
00:36:41.870 --> 00:36:42.630
Михаил Непряхин: а и

296
00:36:43.860 --> 00:36:46.950
Михаил Непряхин: ну Кстати. Нет здесь

297
00:36:47.250 --> 00:36:49.650
Михаил Непряхин: Ты когда у меня много грутин

298
00:36:50.250 --> 00:37:01.120
Михаил Непряхин: Порядка Несоного Порядка здесь Не. Будет У меня десять Куртин читают Канал как Только Одна грутина Прочитала я Сразу. Следующую Пишу о нас провода тут короче

299
00:37:01.630 --> 00:37:02.680
Михаил Непряхин: так и

300
00:37:03.840 --> 00:37:15.910
Михаил Непряхин: как бы порядок он вообще не про бурутины не про каналы если вы хотите, какую-то строгость то это только синхронно делается вот даже даже не бухаризированные каналы все равно это не дают

301
00:37:16.310 --> 00:37:17.300
Михаил Непряхин: вот

302
00:37:20.200 --> 00:37:39.390
Михаил Непряхин: Так и последний вариант. Когда вы только хотите, получать результаты из бурутин и ну там они сами. Откуда-то миру данные им выходные данные Не нужны ну просто Нет вот этого ин-канала да у вас только Аут антипизирован на Запись и вы в цикле

303
00:37:39.820 --> 00:37:44.120
Михаил Непряхин: Пишете Что тут я пишу в Канал привет как дела Пока

304
00:37:45.620 --> 00:37:47.800
Михаил Непряхин: с секундной задержкой

305
00:37:48.670 --> 00:37:51.930
Михаил Непряхин: а здесь я в грутине читаю их

306
00:37:52.540 --> 00:37:57.300
Михаил Непряхин: один, вор я только запускается дальше Жду дальше закрываю канал и выхожу

307
00:37:59.690 --> 00:38:05.730
Михаил Непряхин: вот здесь Тоже, порядок есть Но если здесь будет пуворкеров то порядка Тоже не Будет

308
00:38:12.540 --> 00:38:20.950
Михаил Непряхин: а ну он Же там каждый имеет Да тут немножко по-другому он Же тут каждый воркер Внутри это захороткожи иногда Поэтому тут

309
00:38:21.750 --> 00:38:23.270
Михаил Непряхин: тут порядок Получилось

310
00:38:23.640 --> 00:38:33.120
Михаил Непряхин: в общем смотрите это вот как Раз, такие Примеры минимальные которые чисто на поиграться попробуйте запускайте

311
00:38:34.730 --> 00:38:41.920
Михаил Непряхин: сперва без Пулаворки рождал. Так вот в одной рутинник как он себя ведет потом добавляйте в Это Место, полуоркеров

312
00:38:42.300 --> 00:38:45.480
Михаил Непряхин: а ну то есть вот этот мотоцикл, добавлять

313
00:38:45.660 --> 00:38:48.990
Михаил Непряхин: ну или можно здесь сразу было добавить издец квасаднеркой

314
00:38:49.230 --> 00:38:51.290
Михаил Непряхин: да а потом уже

315
00:38:51.620 --> 00:38:52.860
Михаил Непряхин: менять его

316
00:38:54.210 --> 00:38:55.720
Михаил Непряхин: вот и

317
00:38:55.860 --> 00:39:02.490
Михаил Непряхин: в Принципе как бы, Если вы с этим разберетесь То вы уже чего угодно плюс минус напишите

318
00:39:02.650 --> 00:39:04.250
Михаил Непряхин: Потому что.

319
00:39:04.960 --> 00:39:10.010
Михаил Непряхин: Нет смысла изучать какие То там цепочки

320
00:39:10.630 --> 00:39:29.330
Михаил Непряхин: какие-то пайпланы То Есть Нет смысла попланы выстраивать функциональном стиле потому что вы его и в Обычном процедурном стиле типа и Плане легко выставите ну в чем идея вот смотрите когда У вас есть канал на чте на запись ну вернее который вы

321
00:39:29.500 --> 00:39:42.250
Михаил Непряхин: результаты когда вы читаете и есть, входящий каждый есть исходящий изгородин канала исходящий то в Принципе вы очень легко, эту цепочку. Выстраиваете вы просто ну

322
00:39:42.250 --> 00:39:59.310
Михаил Непряхин: те данные которые получили вы их также можете писать в следующий Канал Или сразу, вот этот Канал может вот здесь вот сразу, порождать тоже, Там еще десять грутин Которые будут тоже там писать и

323
00:39:59.420 --> 00:40:19.320
Михаил Непряхин: тот Канал который результатирующий, дальше можно будет записать короче говоря можно Выстроить какой-то и

324
00:40:19.690 --> 00:40:23.560
Михаил Непряхин: вот Давайте Вопросы, вот здесь вот по этим патронам,

325
00:40:23.810 --> 00:40:26.060
Михаил Непряхин: есть или все понятно, пока

326
00:40:28.170 --> 00:40:39.830
Михаил Непряхин: так если, запись канавудет ли не ровно то она будет происходить сразу после чтения в бурутине или после завершения работы с гордина так Сейчас есть ли запись в канал идете н рона

327
00:40:41.170 --> 00:40:43.620
Михаил Непряхин: так Окей из одной группы.

328
00:40:43.620 --> 00:40:44.450
dmitriy: Да

329
00:40:44.720 --> 00:40:53.220
dmitriy: да проще да у вас просто в примере вот как Раз, здесь идет, привет как дела пока а вот Вмойне

330
00:40:53.420 --> 00:41:01.000
dmitriy: и это все Читается в гурутинах вот Мы получается, Доходим до ин это Передается

331
00:41:01.110 --> 00:41:02.670
dmitriy: Чтение, грутина

332
00:41:03.080 --> 00:41:09.940
dmitriy: вот и дальше после того как Внутри Грутина это прочиталось сразу передается

333
00:41:10.090 --> 00:41:15.370
dmitriy: в функцию мейн дальше обработка той запись.

334
00:41:15.370 --> 00:41:24.130
Михаил Непряхин: Да сразу сразу ну и как не то Что функциями короче если, вот два канала вот У нас выход вход да он получается,

335
00:41:24.650 --> 00:41:28.880
Михаил Непряхин: м допустим мы говорим вот записали вин привет

336
00:41:29.140 --> 00:41:31.260
Михаил Непряхин: он здесь его прочитал

337
00:41:31.730 --> 00:41:33.710
Михаил Непряхин: записал сразу в аут

338
00:41:33.900 --> 00:41:38.040
Михаил Непряхин: вот здесь ваут он сразу появился, и сразу записался или в другом вопрос.

339
00:41:39.000 --> 00:41:47.120
dmitriy: Ну вот я Имею в виду что вот как Раз, внутри Самой грутины а там же идет, Чтение, какое-то

340
00:41:47.350 --> 00:41:48.900
dmitriy: ну вот Например, здесь.

341
00:41:48.900 --> 00:41:49.500
Михаил Непряхин: Так.

342
00:41:49.500 --> 00:41:58.280
dmitriy: Там и дальше у нас освободился канал и после его освобождения сразу же. Предается операция в мэйн

343
00:41:58.740 --> 00:42:00.160
dmitriy: он сразу же. Был.

344
00:42:00.160 --> 00:42:14.260
Михаил Непряхин: Да сразу же короче да-да-да вот ээ вот как только он Прочитал здесь ну если буфера нет Мы говорим? Про кейска до буфера нет вот теперь, он как только прочитал вот в это вот переменное значение записалось

345
00:42:14.420 --> 00:42:23.360
Михаил Непряхин: здесь сразу разблокировались мы здесь и сразу же записали еще одно, и заблокировались, и Ждем пока будем здесь прочитаны.

346
00:42:24.130 --> 00:42:25.660
dmitriy: М Понял. Спасибо.

347
00:42:26.670 --> 00:42:28.870
Михаил Непряхин: Оно Реально короче

348
00:42:29.230 --> 00:42:33.120
Михаил Непряхин: ду Ты де баггер Даже вот есть как, дебагер в Гошке

349
00:42:33.850 --> 00:42:37.880
Михаил Непряхин: но он не показывает короче говоря

350
00:42:38.130 --> 00:42:41.430
Михаил Непряхин: Как себя грузины ведут Как тут блин сделать-то

351
00:42:45.430 --> 00:42:46.960
Михаил Непряхин: ага вот вода

352
00:42:47.120 --> 00:42:50.230
Михаил Непряхин: вот короче говоря тут проблема в том что

353
00:42:53.510 --> 00:42:54.250
Михаил Непряхин: ну а

354
00:42:58.820 --> 00:43:00.290
Михаил Непряхин: джаз

355
00:43:06.790 --> 00:43:07.710
Михаил Непряхин: ой

356
00:43:11.860 --> 00:43:17.730
Михаил Непряхин: Нет и бакером пользуясь Редко потому. Что он не показывая вместе с грузинами Мы Хотим? Чем тобажить

357
00:43:19.230 --> 00:43:21.980
Михаил Непряхин: он не показывает как бы

358
00:43:22.130 --> 00:43:26.300
Михаил Непряхин: он не может показать это синхронном виде потому, что у нас несколько же грутин

359
00:43:26.660 --> 00:43:30.990
Михаил Непряхин: и Поэтому ну и вот мы в основной грутине

360
00:43:31.320 --> 00:43:38.990
Михаил Непряхин: вот мы дошли до этого места у, нас к этому, моменту есть канал аут вот видите структуру канала Она насколько Всякая фигня

361
00:43:40.730 --> 00:43:43.140
Михаил Непряхин: есть канал ин воен группа

362
00:43:44.230 --> 00:43:55.590
Михаил Непряхин: и дальше когда Мы Так какой следующий шаг степ Повер степинтон нотариус, Так степойер Мы идем Запускаем грутину

363
00:43:57.780 --> 00:43:59.000
Михаил Непряхин: и

364
00:43:59.730 --> 00:44:03.120
Михаил Непряхин: Так Сейчас. Увидим Мы здесь огорченно запустилось или Нет

365
00:44:03.270 --> 00:44:06.230
Михаил Непряхин: так ну вот здесь Мы да Мы даже Не Видим

366
00:44:11.460 --> 00:44:13.520
Михаил Непряхин: витя вот У нас Запущенная

367
00:44:14.050 --> 00:44:16.090
Михаил Непряхин: Запущены, еще какие-то грутины

368
00:44:16.500 --> 00:44:17.700
Михаил Непряхин: ивод мэр

369
00:44:18.850 --> 00:44:20.260
Михаил Непряхин: как дураки джаз

370
00:44:20.370 --> 00:44:35.840
Михаил Непряхин: должны искать в какой Там грутине, у нас вот это вот происходит и все равно не попали в нее и даже если. Допустим мы можем в этом месте посмотреть то. Есть как бы это уже другой Кот тоже можем запустить ее и мы конечно увидим это место,

371
00:44:35.880 --> 00:44:52.530
Михаил Непряхин: а уже в другой грутине а ну вот вот мы видим это в бурутине у нас есть бурутина мэйн, и вот в грутине Мейн эту перемены тоже не Видим то Есть он как бы не показывает переменная ни другую грутины и мы Видим Только ситуацию в тот момент когда мы здесь в бутине

372
00:44:52.840 --> 00:45:03.270
Михаил Непряхин: вот Поэтому вот этот дебагер он такой не очень помогает разбраться в работе, бутин если, какой синхронный то конечно да вы это увидите какой то сложный алгоритм

373
00:45:03.340 --> 00:45:10.320
Михаил Непряхин: а если это вот именно надо Понять как работают бурутины и тут приходится обкладываться этими фроннтменами

374
00:45:10.370 --> 00:45:28.480
Михаил Непряхин: ну прямо Критически Важно вот все-таки разобраться вот с этими вот прыжками когда канал буфализированный вот как я сказал что вот мы вот здесь Мы замерли типа как это понять да типа вы просто делаете вот там хмте давайте,

375
00:45:28.750 --> 00:45:29.540
Михаил Непряхин: на и

376
00:45:31.970 --> 00:45:33.560
Михаил Непряхин: после привет

377
00:45:36.160 --> 00:45:37.150
Михаил Непряхин: дуа

378
00:45:38.160 --> 00:45:45.020
Михаил Непряхин: вот вот допустим как понять то, Что, я только Что, говорил значит вот мы здесь Давайте напечатаем

379
00:45:49.200 --> 00:45:51.570
Михаил Непряхин: ну так

380
00:45:52.380 --> 00:45:55.180
Михаил Непряхин: ну в Принципе здесь есть да мы тут увидим привет

381
00:45:55.390 --> 00:46:03.850
Михаил Непряхин: то есть Что Мы ожидаем Что до того как Мы увидели привет ключ Мы Сперва видим до привет Потом увидим им. Привет

382
00:46:04.000 --> 00:46:06.630
Михаил Непряхин: и потом мы видим после привет

383
00:46:07.120 --> 00:46:10.090
Михаил Непряхин: и как-то так приходится

384
00:46:10.490 --> 00:46:12.830
Михаил Непряхин: до привет ин привет

385
00:46:13.220 --> 00:46:14.630
Михаил Непряхин: после привет

386
00:46:14.770 --> 00:46:28.110
Михаил Непряхин: видите ваут еще успела записаться даже то есть вот этот вот аут он так быстро, прочитал что он даже успел быстрее сработать чем после привет там потому что оптимизация есть короче говоря

387
00:46:28.470 --> 00:46:30.090
Михаил Непряхин: вот это вот

388
00:46:30.870 --> 00:46:35.650
Михаил Непряхин: гурутина кого, вернее вывод здесь когда мы пишем это сообщение в аут

389
00:46:36.080 --> 00:46:48.440
Михаил Непряхин: мы его пишем прямо Напрямую, сюда и он очень быстро его получает как бы мы по сути напрямую. Пишем чуть ли не в эту переменную, и Поэтому мы ее успели даже напечатать и

390
00:46:48.600 --> 00:46:50.400
Михаил Непряхин: чем увидеть после привет

391
00:46:51.060 --> 00:47:00.100
Михаил Непряхин: вот ну как видите вот это вот до привет потом мы прочитали вин и только сработало после привет То, есть Мы записали

392
00:47:00.360 --> 00:47:02.070
Михаил Непряхин: вот вот здесь оказались

393
00:47:03.030 --> 00:47:05.640
Михаил Непряхин: и Можем теперь записать как дела

394
00:47:06.920 --> 00:47:08.170
Михаил Непряхин: а вот

395
00:47:08.340 --> 00:47:14.630
Михаил Непряхин: здесь никак по-другому лучше ничего не объяснить потому Что оно тепло вот все надо руками трогать

396
00:47:15.320 --> 00:47:17.310
Михаил Непряхин: текк

397
00:47:18.070 --> 00:47:27.490
Михаил Непряхин: да вот прямо вот эти я вам Примеры это уже как бы эволюционно вот прямо минимально необходим набор против с чем надо разобраться,

398
00:47:28.080 --> 00:47:30.740
Михаил Непряхин: вот с этими, вот четырьмя вариантами,

399
00:47:31.250 --> 00:47:32.980
Михаил Непряхин: и еще в них внутри

400
00:47:33.230 --> 00:47:36.270
Михаил Непряхин: а вот здесь вот добавлять цикл фор

401
00:47:36.640 --> 00:47:44.230
Михаил Непряхин: и играться с Буферизацией канала то есть вот уина аут и наин может играться ей добавлять

402
00:47:44.550 --> 00:47:48.020
Михаил Непряхин: аа буфер один буферновали три и буфер давай

403
00:47:48.130 --> 00:47:53.900
Михаил Непряхин: и как-то Там для себя придумаете вот эти принтеры все можете у меня убрать какие есть и просто

404
00:47:54.750 --> 00:48:05.740
Михаил Непряхин: допустим циферка вы прямо, делаете Мы допустим у вас задача вот здесь у Меня всего лишь три Примера, да то Есть Я всего лишь три сообщения пишу в привет как дела пока

405
00:48:06.000 --> 00:48:08.460
Михаил Непряхин: прямо, убираете все мои принтеры

406
00:48:09.030 --> 00:48:13.690
Михаил Непряхин: и делаете свои принты войны по цифрам типа

407
00:48:14.180 --> 00:48:18.960
Михаил Непряхин: вам нужно просто Вывезти от одного до десяти например, вот расставьте по коду

408
00:48:19.220 --> 00:48:22.370
Михаил Непряхин: а принтеры с цифрами от одного до десяти

409
00:48:23.040 --> 00:48:27.540
Михаил Непряхин: и угадайте так чтобы оно вывелось подряд

410
00:48:28.300 --> 00:48:38.130
Михаил Непряхин: и прям вот банального праздника, здесь делайте при нтв вот здесь Мы дувы выводим десять. Мы Там, один потом здесь два потом здесь опять три ну и вот так вот

411
00:48:38.270 --> 00:48:41.160
Михаил Непряхин: открыть этот как бы именно порядок если вы

412
00:48:41.930 --> 00:48:44.190
Михаил Непряхин: вы должны именно вот читая код

413
00:48:44.500 --> 00:48:45.180
Михаил Непряхин: эээ

414
00:48:46.450 --> 00:48:51.730
Михаил Непряхин: понимать как он будет прыгать по именно вот как, он себя Будет Вести

415
00:48:52.010 --> 00:48:53.940
Михаил Непряхин: Вите в дебагере Не получится

416
00:48:54.160 --> 00:49:02.020
Михаил Непряхин: плюс надо просто ну, вот как, бы по Строчкам Прямо запомнить Где он прямо. Ждет где он блокируется и То же самое с сектами

417
00:49:03.250 --> 00:49:05.970
Михаил Непряхин: так Давайте Еще Вопросы, здесь есть

418
00:49:09.940 --> 00:49:11.550
Михаил Непряхин: так значит ты

419
00:49:12.250 --> 00:49:13.020
Михаил Непряхин: а Давайте.

420
00:49:13.710 --> 00:49:20.710
Илиас Эззахид: Я Несколько примеров видел паторных инны Наути и Этот и Какой то

421
00:49:20.950 --> 00:49:22.720
Илиас Эззахид: три ченел, вроде бы.

422
00:49:22.720 --> 00:49:23.240
Михаил Непряхин: Ммм.

423
00:49:23.240 --> 00:49:30.240
Илиас Эззахид: И и видел там реализации где используется буфер один

424
00:49:31.030 --> 00:49:37.180
Илиас Эззахид: можете объяснить Почему вот Почему буфера ну, один буфер именно.

425
00:49:38.400 --> 00:49:41.020
Михаил Непряхин: Это ну, например, вот У меня есть

426
00:49:41.610 --> 00:49:43.760
Михаил Непряхин: может Сейчас ее тут, запустит

427
00:49:44.720 --> 00:49:46.690
Михаил Непряхин: Так, Сейчас

428
00:49:47.530 --> 00:49:48.240
Михаил Непряхин: час

429
00:49:49.070 --> 00:49:50.580
Михаил Непряхин: пробу хардин

430
00:49:55.230 --> 00:49:56.600
Михаил Непряхин: есть

431
00:50:09.930 --> 00:50:10.870
Михаил Непряхин: пока

432
00:50:12.150 --> 00:50:16.310
Михаил Непряхин: Так, вот короче здесь Задачка натыкайте повая, с собесом

433
00:50:17.290 --> 00:50:18.710
Михаил Непряхин: и

434
00:50:19.250 --> 00:50:23.020
Михаил Непряхин: вот У меня здесь короче говоря в Цикле фор

435
00:50:24.650 --> 00:50:30.590
Михаил Непряхин: аа витя я временный Канал с результатами и делаю его

436
00:50:30.810 --> 00:50:32.450
Михаил Непряхин: не буффризированным.

437
00:50:32.780 --> 00:50:34.200
Михаил Непряхин: Красивого буфера Нет

438
00:50:35.480 --> 00:50:43.280
Михаил Непряхин: и это ошибка потому что здесь должен быть буфер. Один и зачем Он здесь Нужен и чаще всего зачем бывает буфер, один

439
00:50:44.180 --> 00:50:45.500
Михаил Непряхин: потому что

440
00:50:45.740 --> 00:50:48.590
Михаил Непряхин: если буфера не будет

441
00:50:49.090 --> 00:50:52.670
Михаил Непряхин: то я получается блокируюсь

442
00:50:53.100 --> 00:50:54.480
Михаил Непряхин: и

443
00:50:54.790 --> 00:50:56.370
Михаил Непряхин: Ммм

444
00:51:05.180 --> 00:51:08.060
Михаил Непряхин: ну здесь меня ситуация, что если контекст Первый срабатывает

445
00:51:08.960 --> 00:51:11.130
Михаил Непряхин: то канала никогда не будет Прочитан

446
00:51:11.890 --> 00:51:16.340
Михаил Непряхин: ааа если бы и эта Грутина она

447
00:51:16.960 --> 00:51:18.590
Михаил Непряхин: течет начинаетсячка

448
00:51:20.030 --> 00:51:34.260
Михаил Непряхин: а если бы буфер, был один то Я бы из нее вышел Блин только уж слишком сложно ванна Давайте потом пример сделаю нормальный потому Что тут надо чаще всего буфер один

449
00:51:34.430 --> 00:51:38.360
Михаил Непряхин: делают там где канал не закрывается

450
00:51:39.800 --> 00:51:44.340
Михаил Непряхин: но должен быть как бы вот именно, получен один результат

451
00:51:45.000 --> 00:51:54.370
Михаил Непряхин: но это не очень удобно и Это только но там где По-другому нельзя Так Делают а где можно закрыть Канал Всегда, Канал закрывают вы Же, когда вы к нам закрываете,

452
00:51:55.120 --> 00:52:07.120
Михаил Непряхин: все как Бы у вас Нет Проблем? Вы и

453
00:52:07.660 --> 00:52:10.610
Михаил Непряхин: как же тут так просто Не ответить на этот вопрос Извините.

454
00:52:10.860 --> 00:52:17.840
Илиас Эззахид: Ну невыгоднее тогда делать несколько буферов ну там три как минимум это не будет быстрее чем один буфер.

455
00:52:18.590 --> 00:52:20.400
Михаил Непряхин: Ммм да не

456
00:52:20.940 --> 00:52:23.160
Михаил Непряхин: как бы там

457
00:52:25.510 --> 00:52:33.660
Михаил Непряхин: когда вы с каналами работаете вы и так очень медленно работаете скажем так Поэтому от того что это будет один буфер. Там или Не один

458
00:52:34.400 --> 00:52:50.170
Михаил Непряхин: вы особо Не выиграете то Есть Вот Именно как Кот будет работать он не будет работать быстрее если будешь работать больше это просто вопрос в том что например вы Хотите. Бочами работать Или Нет потому что если у вас допустим ипочами работаете вы

459
00:52:51.190 --> 00:52:59.050
Михаил Непряхин: из кафки прочитали допустим десять сообщений а кафка любит плечами работать поместили все эти десять сообщений, в канал

460
00:52:59.250 --> 00:53:01.280
Михаил Непряхин: и пошли, за следующую десятью

461
00:53:01.420 --> 00:53:20.410
Михаил Непряхин: как, бы вы не ждете пока там по одному кто здесь канал будет читать вы просто раза следующей пачкой пошли и вот для этого буфер-то Нужен то есть там где вы прямо вот сетью, работаете и работаете бочами вот эта вот бухризация У канала большая она дает Профит но с точки зрения выполнения кода

462
00:53:20.600 --> 00:53:23.000
Михаил Непряхин: Там все все Одинаково медленно работает

463
00:53:23.260 --> 00:53:29.780
Михаил Непряхин: ну с одной стороны и быстро достаточно. Быстро Но там когда Вы Из кномами работаете там какой-то Скорости

464
00:53:30.170 --> 00:53:42.230
Михаил Непряхин: Все равно речь не идет, ну Там Там уголки Внутри Да То есть канал Это все медленно То Есть Это примерно То же самое когда Мы про мирдекс говорил что как бы да мюзикл, он дает вам вот Эту возможность

465
00:53:42.230 --> 00:53:51.070
Михаил Непряхин: Писать Но в канавах плюс-минус под капотом Один, Фиг То Же самое То есть когда У вас много Грузин Запущено а если у вас Пишущие бутины

466
00:53:51.080 --> 00:53:54.830
Михаил Непряхин: то они будут тормозить а если у вас

467
00:53:55.050 --> 00:53:58.220
Михаил Непряхин: только одна грутина Допустим Пишет

468
00:53:58.360 --> 00:53:59.590
Михаил Непряхин: он

469
00:53:59.770 --> 00:54:02.370
Михаил Непряхин: ну вам неудачный, пример ну короче вот

470
00:54:04.860 --> 00:54:09.350
Михаил Непряхин: может буфер один, Нужен для Не, жесткой синдронизации

471
00:54:10.390 --> 00:54:14.420
Михаил Непряхин: э да смотрите Там вот

472
00:54:16.050 --> 00:54:30.810
Михаил Непряхин: и вы с этим как бы вы более-менее до конца с ним разберетесь если будете писать в Библиотеке вот например, какой нибудь кролик рябитымклувод и я с Этим плотно работал много Потому что Я писал Сперва парсеры

473
00:54:30.950 --> 00:54:38.080
Михаил Непряхин: и в парсерах Там ну Понятно Там нужна ну Там пулыворкеров при Этом не Так сложно

474
00:54:38.140 --> 00:54:56.740
Михаил Непряхин: а самый топ это когда вы пишете библиотеки для работы с кафкой с рэбитом с пастбирой, Там. Чего-нибудь многопоточное Или ты да вот вы с Этим хорошо разбираетесь а так даже на словах как бы не объяснишь потому что, там такие очень хитрые патроны используются

475
00:54:56.760 --> 00:54:58.470
Михаил Непряхин: и

476
00:54:59.400 --> 00:55:10.930
Михаил Непряхин: ну как бы для Начала вот как бы, надо Хотя бы, научиться работать с вова с полом воркеров Если вы вот это вот освоите, вы Если Без любой пройдете и для себя Чего угодно напишите

477
00:55:11.170 --> 00:55:16.100
Михаил Непряхин: следующий этап это уже библиотеки когда вы будете писать библиотечный? Код

478
00:55:16.280 --> 00:55:24.440
Михаил Непряхин: то вы все равно будете Смотреть как другие используют буртинные каналы в библиотеках,

479
00:55:24.700 --> 00:55:40.090
Михаил Непряхин: и там из этого выжимают максимум и там используются разные трюки хаки которые в реальной жизни в продуктовом коде Никогда вы, не будете писать может Это слишком сложно любой коллега кто залезет в этот продуктовый Код и сделает в нем изменение сразу же все сломает

480
00:55:40.500 --> 00:55:54.690
Михаил Непряхин: и Поэтому как бы, закладываться на Это ну Не приходится в продуктовом кодексе, вот надо вот прям максимально в лоб прямолинейное чего-то очень простое если начинаете что-то усложнять там вот То ну как бы

481
00:55:55.330 --> 00:55:57.370
Михаил Непряхин: оно очень хрупкое становится

482
00:55:58.330 --> 00:56:03.650
Михаил Непряхин: а ведь вдруг Всегда по ссылке придет в воротины а когда Он крупные посылки производится на каких лицах Можно Подходить

483
00:56:03.700 --> 00:56:19.100
Михаил Непряхин: Да Всегда по указателю Ваньку передается потому что видите что у Него внутри вы просто Скопируете Это, все и Это, работать не Будет как и с мютоксом То есть с митоксом Мы Работаем по указателю в грутинах и своей группой тоже по указателю

484
00:56:19.160 --> 00:56:21.420
Михаил Непряхин: Поэтому вариантов

485
00:56:21.660 --> 00:56:27.020
Михаил Непряхин: и работать своей группой ни, по указателю вообще Нет только по указателю

486
00:56:27.510 --> 00:56:34.390
Михаил Непряхин: ну, не по указателю если вы до этого не видели примеры когда своей группой работают вот так вот

487
00:56:34.570 --> 00:56:38.920
Михаил Непряхин: а здесь вот вы групп делай да ну там помню да

488
00:56:39.280 --> 00:56:40.500
Михаил Непряхин: То и

489
00:56:41.210 --> 00:56:58.460
Михаил Непряхин: Это все равно указатель потому Что. Мы и

490
00:57:00.490 --> 00:57:08.270
Михаил Непряхин: говоря Могут Поблизи ссылки был да Я Подказ вчера Слушал с Этим Кутузова с

491
00:57:08.430 --> 00:57:15.220
Михаил Непряхин: Тем кто пишет с разработчиком в джей бренте он вообще говорит ссылки и как бы

492
00:57:15.900 --> 00:57:21.570
Михаил Непряхин: ну короче Говоря я бы все-таки Не назывался Своими Указателями и Не путался в них все-таки

493
00:57:21.680 --> 00:57:22.770
Михаил Непряхин: правильнее

494
00:57:22.920 --> 00:57:34.840
Михаил Непряхин: ну Указателями и

495
00:57:35.040 --> 00:57:40.770
Михаил Непряхин: аа если, вы столкнетесь то Пунктир У воркеров Решит вашу задачу

496
00:57:42.540 --> 00:57:50.930
Михаил Непряхин: так Давайте отдохнем Пять минут и еще еще еще поговорим немножко, про Бургеров есть еще интересные особенности

497
00:57:53.800 --> 00:57:56.710
Михаил Непряхин: да в общем да Две, да и две минуты отдохнул

498
01:01:50.020 --> 01:02:00.260
Михаил Непряхин: да когда пишем буфер один мы не блокируемся когда что-то пишем в канал да верно а когда без блокиру ну я смотрите когда буфер один

499
01:02:00.610 --> 01:02:07.250
Михаил Непряхин: это значит мы не блокируемся если у нас одно, сообщение мы Два запишем но когда мы второе захотим писать мы заблокируемся

500
01:02:08.140 --> 01:02:09.800
Михаил Непряхин: то есть как бы

501
01:02:10.860 --> 01:02:12.340
Михаил Непряхин: канал с буфером

502
01:02:12.900 --> 01:02:17.810
Михаил Непряхин: он начинает вести себя как канал без буфера когда он полностью заполнен

503
01:02:18.420 --> 01:02:25.390
Михаил Непряхин: Поэтому как бы если вы Хотите, одно сообщение записать и не блокироваться

504
01:02:25.530 --> 01:02:30.730
Михаил Непряхин: тогда вы можете сделать буфер, один но вы одно сообщение записали пошли дальше

505
01:02:31.260 --> 01:02:44.880
Михаил Непряхин: а если буфера не будет вы Одно, сообщение записали и тут же и заблокировались и пока вот с Той стороны не прочитали вы дальше не пойдете он в этом Разница то есть буфер он позволяет, записать сколько то не блокируясь идти дальше

506
01:02:45.770 --> 01:02:48.900
Михаил Непряхин: мы грути не пишем канал и получаем панику

507
01:02:49.180 --> 01:02:51.210
Михаил Непряхин: канал закрывается нормально

508
01:02:52.230 --> 01:02:57.910
Михаил Непряхин: так в картине пишем в канал получаем панику к нам, за космосом Не освоить если, Мы

509
01:02:58.650 --> 01:03:01.640
Михаил Непряхин: а во Первых можете Не париться о закрытии каналов

510
01:03:01.870 --> 01:03:06.110
Михаил Непряхин: Там сборка мусора соберет если канал не будет пользоваться сборщик его соберет

511
01:03:06.450 --> 01:03:07.810
Михаил Непряхин: канал

512
01:03:08.540 --> 01:03:12.960
Михаил Непряхин: а насчет паники в грутине пишем канал и получаем панику

513
01:03:13.520 --> 01:03:14.840
Михаил Непряхин: она закроется на мою,

514
01:03:15.370 --> 01:03:18.730
Михаил Непряхин: она вообще ни при чем ну получили в врутине панику

515
01:03:19.060 --> 01:03:21.290
Михаил Непряхин: канал кто там своей жизни Живет

516
01:03:21.650 --> 01:03:24.470
Михаил Непряхин: допустим вы поймали там панику

517
01:03:24.820 --> 01:03:31.610
Михаил Непряхин: выше ну чтобы приложение вообще не размоталось не закрылось если вы панику словили хоть, в одной рутине

518
01:03:31.720 --> 01:03:36.490
Михаил Непряхин: вам надо эту панику отловить если, вы не поймаете, то вы закроете, приложение

519
01:03:36.910 --> 01:03:38.580
Михаил Непряхин: допустим вы отловили

520
01:03:38.970 --> 01:03:45.870
Михаил Непряхин: канал вообще никак не пострадал можете дальше работать с этим каналом как бы паники в гурутинах

521
01:03:46.300 --> 01:03:51.880
Михаил Непряхин: живут своей жизнью а канал к этому никакого отношения не имеют, то есть

522
01:03:52.180 --> 01:03:53.400
Михаил Непряхин: с каналом бойся на маме

523
01:03:56.510 --> 01:03:58.650
Михаил Непряхин: так.

524
01:03:59.530 --> 01:04:02.370
Михаил Непряхин: Когда Можно не закрывать канал

525
01:04:02.970 --> 01:04:18.870
Михаил Непряхин: вы же можете не закрывать канал если этого нет в этом надобности вы можете как будто это клоуз это как Бы ну похоже когда Мы Ресурсы. Закрываем но в случае с каналом это только для того. Чтобы вот я здесь его закрываю Ради чего-то зачем я его здесь закрываю

526
01:04:21.390 --> 01:04:31.000
Михаил Непряхин: ну чтобы из этого цикла Фор выйти и все то есть как бы я его я зачем-то его закрываю если, я его не закрою и просто пойду дальше

527
01:04:31.150 --> 01:04:36.220
Михаил Непряхин: и этот канал не будет использоваться его сборщи мусора соберет и все нормально будет то есть как бы

528
01:04:36.610 --> 01:04:38.860
Михаил Непряхин: закрывать канал не обязательно

529
01:04:40.480 --> 01:04:43.730
Михаил Непряхин: это не какой-то ресурс типа сеть который нам. Нельзя закрывать

530
01:04:44.560 --> 01:04:50.340
Михаил Непряхин: та значит вот интересненький еще примерчик, здесь значит на один экран кстати у вас

531
01:04:51.110 --> 01:04:53.530
Михаил Непряхин: все есть и войнупы

532
01:04:53.680 --> 01:04:59.400
Михаил Непряхин: Если, все есть для работы кроме контекста на Контексте потомки

533
01:05:00.190 --> 01:05:08.870
Михаил Непряхин: что Мне мешает смотреть буферзированный канал двадцать то есть у нас там двадцать значение может поместиться Прежде чем мы начнем блокироваться

534
01:05:09.210 --> 01:05:10.650
Михаил Непряхин: на запись

535
01:05:11.590 --> 01:05:18.470
Михаил Непряхин: аа новая группа без нее никак значит сразу добавляем в воен группу десять потому что был он использовал десять поркеров

536
01:05:19.490 --> 01:05:25.250
Михаил Непряхин: Аа ну-ка ведь, Я вам просто показываю пример можно вот так сделать а можно вот здесь вот по одной добавлять

537
01:05:25.470 --> 01:05:27.510
Михаил Непряхин: вот он как хотите, так и делать,

538
01:05:29.070 --> 01:05:30.170
Михаил Непряхин: то же самое Год

539
01:05:31.420 --> 01:05:38.400
Михаил Непряхин: вот значит запускаем цикл фор десятьтераций, десять, Раз, добавляем в игру Пущечек

540
01:05:38.580 --> 01:05:40.040
Михаил Непряхин: ну чтоб потом

541
01:05:40.920 --> 01:05:46.690
Михаил Непряхин: отпустить вот здесь Мы внутри грузин сразу их отпускаем запускаем десять. Грузин

542
01:05:47.500 --> 01:05:49.220
Михаил Непряхин: в каждой грутине

543
01:05:49.450 --> 01:05:54.620
Михаил Непряхин: мы захватываем по указателю вот этот канал

544
01:05:55.710 --> 01:05:59.570
Михаил Непряхин: и каждый из десяти грутин будет его читать

545
01:06:01.360 --> 01:06:05.270
Михаил Непряхин: а потом когда будут получать значение будем, выпечатать

546
01:06:06.370 --> 01:06:09.770
Михаил Непряхин: ну и все это все что, будет делать в рутины

547
01:06:10.450 --> 01:06:18.530
Михаил Непряхин: вот чтобы эти бутины все закончились видите вот я здесь закрываю Канал иначе, эти все здесь Не рутинны они Никогда Не Закроются

548
01:06:18.710 --> 01:06:22.060
Михаил Непряхин: Потому что, здесь был бесконечный цикл, бесконечно будет читаться этот Канал

549
01:06:22.670 --> 01:06:25.240
Михаил Непряхин: Так ки отправляю в канал

550
01:06:25.730 --> 01:06:27.170
Михаил Непряхин: двадцать значений

551
01:06:27.950 --> 01:06:34.160
Михаил Непряхин: ну тут, получается, с нуля начинается от наряды девятнадцати я туда. Отправляю пишу в этот канал

552
01:06:34.680 --> 01:06:40.740
Михаил Непряхин: а Раз, он буффризированный то я быстро, и все записал бам бам бам бам записал канал закрыл,

553
01:06:40.840 --> 01:06:45.910
Михаил Непряхин: жду то есть как бы если смотреть как Кот будет выполняться

554
01:06:46.570 --> 01:06:49.730
Михаил Непряхин: создали канал создали воен группу,

555
01:06:50.470 --> 01:07:02.820
Михаил Непряхин: десять грутин создали но они не запустится. То есть, вот как бы пока что вот мы вот здесь окажемся ничего не запустится. Никакие грутины не запустятся, они просто поставятся, в очередь они даже не успеют Заработать

556
01:07:03.280 --> 01:07:11.240
Михаил Непряхин: потом мы двадцать значений в канал записываем даже здесь эти гурутины до сих пор могут не начать работать.

557
01:07:11.390 --> 01:07:13.860
Михаил Непряхин: Закрыли канал ждем

558
01:07:14.080 --> 01:07:17.840
Михаил Непряхин: и вот мы ждем запустились эти десять, гурутин

559
01:07:18.160 --> 01:07:27.270
Михаил Непряхин: а так как у нас буферизация двадцать ну типа по Два значения каждая Грутина успеет вычитать

560
01:07:28.290 --> 01:07:31.860
Михаил Непряхин: и все значит и распечатываем их

561
01:07:34.990 --> 01:07:44.470
Михаил Непряхин: Варваг сингвин групп вггуу используется связь Один двадцать пять используется у меня, здесь версия Один двадцать четыре

562
01:07:44.940 --> 01:07:46.720
Михаил Непряхин: а здесь еще Нет такого

563
01:07:47.140 --> 01:07:49.410
Михаил Непряхин: нити нету, у меня, нету здесь гол

564
01:07:49.720 --> 01:08:01.950
Михаил Непряхин: Еще Еще Не, Завезли в один Двадцать пять да Можно сделать вггу но в общем То там Ну все равно надо понимать как это под капотом работать ты как бы в явном виде

565
01:08:02.240 --> 01:08:05.520
Михаил Непряхин: короче там верь один двадцать пять вот это Можно Не писать

566
01:08:05.630 --> 01:08:12.870
Михаил Непряхин: это Можно Не Писать и дан Можно Не Писать Это, под капотом будет Сделано Там с помощью синтаксиса Вот Этого Нового вг Точку гол,

567
01:08:13.940 --> 01:08:17.460
Михаил Непряхин: М Так но все равно Еще Пока все сидят на Один Двадцать четыре

568
01:08:18.090 --> 01:08:19.340
Михаил Непряхин: Не Перешлишь

569
01:08:21.640 --> 01:08:23.910
Михаил Непряхин: Причем Бесконечный Цикл

570
01:08:25.060 --> 01:08:28.060
Михаил Непряхин: где Бесконечный Цикл где Нет бесконечного, цикла

571
01:08:28.620 --> 01:08:32.750
Михаил Непряхин: это конечно цикл, паранджу Просто терроризм по Каналу.

572
01:08:33.260 --> 01:08:39.120
Илиас Эззахид: Нет вы сказали что Если, вы Не ставили бы клоуз эту

573
01:08:39.310 --> 01:08:41.170
Илиас Эззахид: бесконечно выкрутилось.

574
01:08:41.170 --> 01:08:47.670
Михаил Непряхин: Ну вернее не крутилась бы бесконечно а зависла бы навсегда вот так неправильно выразился

575
01:08:47.870 --> 01:08:56.130
Михаил Непряхин: просто мы бы здесь навсегда заблокировались да цикл, не Бесконечный но мы заблокировались, бы Здесь навсегда если, бы я не закрыл,

576
01:08:57.080 --> 01:09:02.660
Михаил Непряхин: аа вот значит и самый, большой сюрприз когда мы Это дело запускаем

577
01:09:04.410 --> 01:09:06.590
Михаил Непряхин: то оно Кстати,

578
01:09:10.600 --> 01:09:12.399
Михаил Непряхин: Это вообще то

579
01:09:14.970 --> 01:09:16.330
Михаил Непряхин: а ну вот да

580
01:09:16.620 --> 01:09:19.700
Михаил Непряхин: вот значит смотрите какая интересная штука

581
01:09:20.399 --> 01:09:22.850
Михаил Непряхин: мы запустили Десять, вокеров

582
01:09:23.450 --> 01:09:25.870
Михаил Непряхин: Но первый воркер

583
01:09:26.210 --> 01:09:30.160
Михаил Непряхин: у нас работал ну вот он половина вычитал

584
01:09:30.680 --> 01:09:36.370
Михаил Непряхин: а потом разнобой пошел потом девятый уборки разработал второй третий четвертый пятый шестой седьмой восьмой нулевой

585
01:09:38.300 --> 01:09:39.260
Михаил Непряхин: блин

586
01:09:39.920 --> 01:09:51.140
Михаил Непряхин: почему то есть мы в живот, хотим, какую то параллельность нормальную почему у нас по сути работал только один воркер а все остальные по одному значению только здесь вот получили

587
01:09:51.380 --> 01:09:52.810
Михаил Непряхин: и ты в самом начале

588
01:09:56.060 --> 01:09:57.950
Михаил Непряхин: потому что у нас

589
01:09:59.350 --> 01:10:03.280
Михаил Непряхин: несмотря на то что даже гомакс-прокс видите он

590
01:10:03.440 --> 01:10:08.980
Михаил Непряхин: Не один да Их много все равно какая то Гурутина запустилась первой

591
01:10:10.150 --> 01:10:15.590
Михаил Непряхин: и в моем случае запустилась первый вот Это первый уоркер

592
01:10:16.320 --> 01:10:25.700
Михаил Непряхин: но на самом деле первый оркестр он был нулевой это как бы второй бургер и он короче говоря основную работу сделал а все остальное просто как бы не успело даже запуститься

593
01:10:25.800 --> 01:10:32.740
Михаил Непряхин: ну потому что вот оно все равно вот так вот неравномерно оно Запускается если, мы гомосексуализм даже сделаем

594
01:10:34.360 --> 01:10:48.070
Михаил Непряхин: а здесь вообще никакой вакер ничего Не успел. Запуститься просто Один девятый воркер вот он как Запустился последний и он всю, работу сделал ну вот видите следующий версит учета другие поработали вот я опять, обновил, опять, один девятый воркер

595
01:10:48.570 --> 01:10:57.940
Михаил Непряхин: ну во-первых почему последние, запускаются в первую очередь потому что от оптимизации Есть гоу последняя Запущенная гурутина она первой работает это такая оптимизация

596
01:10:58.230 --> 01:11:15.880
Михаил Непряхин: на собесе тоже Есть такой вопрос типа вот показывают вам Допустим Запускается грутина грутина грутина грутина какая и Что выведет типа Кот так вот Та, грутина которая Последней запустилась она Первая запустится а потом уже все остальные в том порядке к которому были Реально запущены то есть Кроше есть такая оптимизация специальная

597
01:11:16.140 --> 01:11:22.080
Михаил Непряхин: последняя Запущенная гурутина Она первой отрабатывает а потом же все страны.

598
01:11:22.340 --> 01:11:26.960
Михаил Непряхин: Вот и вот этот сказку пример вот последняя запущенная грутина ветер на первый Отрабатывает

599
01:11:27.910 --> 01:11:29.790
Михаил Непряхин: почему потому что

600
01:11:30.050 --> 01:11:31.890
Михаил Непряхин: вот запустилась гурутина

601
01:11:32.090 --> 01:11:44.240
Михаил Непряхин: последняя да и она взяла и просто у меня там буфер двадцать одна его быстренько весь, вычитала бах бабах бабах другие вообще ничего не успели сделать потому, что. Они просто не запустились

602
01:11:44.900 --> 01:12:03.140
Михаил Непряхин: ну допустим вот вызовем искусственный авейт Наш то есть вот этот допустим пример ну никогда в жизни как бы Не Происходилось так делать, но допустим вы Хотите, реальную параллельную какую-то синхронность да умолнайтесь ее нет по Сути косин хроно работает можете прямо сказать давай, делай оейд

603
01:12:03.140 --> 01:12:08.240
Михаил Непряхин: и с авейтом У нас Так и будет вот девятая вот последняя грузия запустилась

604
01:12:08.240 --> 01:12:15.940
Михаил Непряхин: а потом давай, Поработать всем другим и видите как бы они начали передавать работу друг другу

605
01:12:16.020 --> 01:12:25.380
Михаил Непряхин: и реально на Каждую Картину пришлось Вот девятый воркер в Этом девятый год то есть на Каждую грутину примерно По два и

606
01:12:25.480 --> 01:12:29.030
Михаил Непряхин: сообщений Пришлось ну да Что ровно два дня Получилось

607
01:12:29.430 --> 01:12:35.010
Михаил Непряхин: вот Ммм потому что Без овейта оно вот ведет себя

608
01:12:35.160 --> 01:12:39.020
Михаил Непряхин: очень как бы, кто быстро, первый начал работать тот свою работу волю

609
01:12:40.090 --> 01:12:45.030
Михаил Непряхин: ну если не овейт можно Подождать Время и в Принципе Оно

610
01:12:45.350 --> 01:12:49.170
Михаил Непряхин: мало метео. Вот тишина на секунд

611
01:12:50.210 --> 01:12:51.090
Михаил Непряхин: мало

612
01:12:53.490 --> 01:12:55.930
Михаил Непряхин: Так Давайте Скука сделаем

613
01:12:57.440 --> 01:13:03.490
Михаил Непряхин: Так это еще получается Одна Микросекунда Одна микросекунда мало Давайте сделаем

614
01:13:03.780 --> 01:13:05.620
Михаил Непряхин: пятьдесят микросекунд

615
01:13:07.540 --> 01:13:09.740
Михаил Непряхин: о пятьдесят микасекун уже хватило

616
01:13:10.160 --> 01:13:11.880
Михаил Непряхин: то есть короче говоря

617
01:13:12.000 --> 01:13:19.950
Михаил Непряхин: если Мы спим мало то все равно Оно Там как бы Есть оптимизация что Если мы Спим Но мало

618
01:13:20.870 --> 01:13:24.800
Михаил Непряхин: то Мы Не отдаем управления другой Грутине потому что мало Спим

619
01:13:24.980 --> 01:13:29.910
Михаил Непряхин: а вот Если, Мы спим ну вот сколько-то вот уже значительно Не знаю Сколько Там десять. Микро секунд

620
01:13:30.450 --> 01:13:34.950
Михаил Непряхин: ну десять. Месяцев. Он видит Тоже, Не отдает Там есть какое-то значение Пять

621
01:13:35.210 --> 01:13:40.080
Михаил Непряхин: да опять тоже Не отдает ведь аа Один отдает Одна Микросекунда

622
01:13:40.370 --> 01:13:54.560
Михаил Непряхин: Ну Здесь у Меня вообще две гости. Начинают работать то тоже. Такое Странное Поведение вот опять уже Пять уже нормально то Есть Пять уже срабатывают как авейт Реально отдают другим Грутинам но опять же не Всегда ведь его здесь не отдала, потом отдала, вот

623
01:13:54.750 --> 01:13:56.990
Михаил Непряхин: то Есть короче важно понимать что

624
01:13:57.000 --> 01:14:15.190
Михаил Непряхин: и планировщик вот как решит и

625
01:14:15.330 --> 01:14:27.190
Михаил Непряхин: вот Поэтому как бы важно понимать что лучше когда имеете дело с Гаутинами можете Не закладываться Никогда на порядок Но его Не будут Всегда, будут Еще и на разных системах по-разному себя вести

626
01:14:27.290 --> 01:14:32.990
Михаил Непряхин: вот даже если гомок прокс один а уж если оно не один то уж тем более как бы это

627
01:14:33.180 --> 01:14:34.260
Михаил Непряхин: да и

628
01:14:34.960 --> 01:14:38.590
Михаил Непряхин: вот и среди не один вот нулевой два раза поработал

629
01:14:39.730 --> 01:14:42.240
Михаил Непряхин: ну более менее похоже так можно Сейчас отключить

630
01:14:46.690 --> 01:14:50.600
Михаил Непряхин: аа ну половина времени работает все-таки один потом ведь

631
01:14:50.770 --> 01:14:58.960
Михаил Непряхин: по одному а у них там все таки они на тебя успели взять по одному но больше всего работал какой то одинокий,

632
01:15:00.710 --> 01:15:03.120
Михаил Непряхин: так вот это такая вот особенность

633
01:15:03.610 --> 01:15:05.180
Михаил Непряхин: дальше

634
01:15:08.130 --> 01:15:09.080
Михаил Непряхин: да

635
01:15:14.610 --> 01:15:16.400
Михаил Непряхин: так здесь меня паттер На

636
01:15:17.820 --> 01:15:19.120
Михаил Непряхин: дестопом.

637
01:15:23.240 --> 01:15:24.860
Михаил Непряхин: Объяснять не объяснять

638
01:15:26.730 --> 01:15:30.170
Михаил Непряхин: ну ладно. У нас соседний урок получился. Пробуратинные кравы

639
01:15:30.620 --> 01:15:35.650
Михаил Непряхин: короче смотрите что и что Еще важно понимать

640
01:15:35.800 --> 01:15:39.460
Михаил Непряхин: что Есть сигналы значит вы можете сигнализировать грудином

641
01:15:40.170 --> 01:15:41.250
Михаил Непряхин: закройся

642
01:15:41.910 --> 01:15:51.690
Михаил Непряхин: значит как это работает ну вот ну первый вариант с Контекстом конечно же контекст но что под, капотом у контекста в очень простой патру

643
01:15:51.870 --> 01:15:58.690
Михаил Непряхин: а Если, смотрите мы берем и создаем вот у нас основной канал Таски мы здесь читаем вот сделали буфер. Двадцать

644
01:15:59.070 --> 01:16:03.210
Михаил Непряхин: и сигнальный канал еще без Буфера просто с пустой структурой

645
01:16:03.500 --> 01:16:08.240
Михаил Непряхин: просто сигнальный канал Мы По нему будем сигнализировать чтобы картина закрылась

646
01:16:09.130 --> 01:16:17.710
Михаил Непряхин: так дальше ну Здесь Я как Будто бы сервер поднимаю Х дтп и хочу узнать когда он завершится

647
01:16:19.020 --> 01:16:26.660
Михаил Непряхин: а значит дальше запускается Бурутина в грутине в бесконечном цикле фор мы что то делаем

648
01:16:27.510 --> 01:16:33.230
Михаил Непряхин: ну вот пишем мы сорок два в канал да в этот канал просто, пишем сорок два

649
01:16:34.550 --> 01:16:44.140
Михаил Непряхин: но мы Хотим, извне дать сигнал типа закройся все хватит писать сорок два прекрати выходим

650
01:16:45.050 --> 01:16:47.450
Михаил Непряхин: и мы закрываем канал стоп

651
01:16:47.920 --> 01:16:51.370
Михаил Непряхин: когда мы канал стоп закроем то вот этот кризис работает

652
01:16:52.260 --> 01:17:07.570
Михаил Непряхин: и Он конечно Не Сразу сработает потому что Он с Кейси срабатывает в случайном Порядке Даже после того Как канал сто Год Закрыт какое-то Время мы все равно мы Будем Продолжать Вот сюда писать ну как повезет потому что они срабатывают кейсы у нас срабатывают Всегда случайном Порядке

653
01:17:07.900 --> 01:17:20.210
Михаил Непряхин: Поэтому как только мы канал Стоп Закрыли мгновенно мы по Нему не Выйдем есть вероятность что сколько то Раз, мы еще Все таки вот сюда попадем потом Рано Или поздно все равно в этот кей попадем

654
01:17:20.540 --> 01:17:34.410
Михаил Непряхин: и сделаем брейк из циклофор зачем здесь метка потому что Если без метки то Мы будем выходить с селектом брейк ботин селект а это не то Поведение. Которое Мы Хотим? Выйти из цветов фор поэтому здесьметка

655
01:17:35.020 --> 01:17:39.480
Михаил Непряхин: когда мы получим сигнал стоп Выйдем, из цикло фор

656
01:17:41.310 --> 01:17:45.830
Михаил Непряхин: нам мы закрываем вот этот канал сервердан.

657
01:17:46.270 --> 01:17:47.830
Михаил Непряхин: А зачем мы это делаем

658
01:17:48.420 --> 01:17:50.770
Михаил Непряхин: потому что

659
01:17:50.910 --> 01:17:53.270
Михаил Непряхин: Пока этот Канал Не закрыт

660
01:17:54.040 --> 01:17:59.820
Михаил Непряхин: Мы Понимаем Что Мы Работаем ну Представим что-то У нас хотя и по сервер такой

661
01:18:00.260 --> 01:18:14.800
Михаил Непряхин: и Пока сервер Дам не закрыт Мы понимаем что сервер существует он работает он вот это в цикле фокурудица Мы просто здесь в конце смотрите вот Мы читаем из канала сервердан.

662
01:18:15.740 --> 01:18:24.630
Михаил Непряхин: И ну Мы блокируемся здесь да Мы блокируемся до тех Пор пока его вот эта вот грутина здесь не закроет

663
01:18:25.790 --> 01:18:27.420
Михаил Непряхин: и таким образом

664
01:18:27.610 --> 01:18:29.830
Михаил Непряхин: мы смотрите как здесь поступаем

665
01:18:30.310 --> 01:18:38.870
Михаил Непряхин: а ну во-первых У меня есть еще грызть фуфшет даун ну то есть вернее этот патрон По сути Этой грызху уж отдаунда я вам Сейчас показываю как и

666
01:18:39.030 --> 01:18:49.480
Михаил Непряхин: значит вот Мы запустили наше приложение ну вот сервер запустили и какой то там ньюс кейс здесь э У меня да тоже самое у меня здесь

667
01:18:49.590 --> 01:18:51.740
Михаил Непряхин: то есть как бы повторяет этот патруль

668
01:18:53.210 --> 01:19:02.630
Михаил Непряхин: дальше Мы создаем сигнальный канал с бушером один ну так принято создавать я уж не Знаю о чем там буфердинг как же так принято

669
01:19:03.060 --> 01:19:03.750
Михаил Непряхин: ааа

670
01:19:03.950 --> 01:19:16.460
Михаил Непряхин: Мы получаем этот канал передаем его вот этот сигнал ноуттифай и говорим что нас интересуют два типа сигналов это, сигнт и сектором

671
01:19:16.610 --> 01:19:23.780
Михаил Непряхин: это, реальность из колы операционки То есть Они там мапятся. На сигналы Ленксовые

672
01:19:24.310 --> 01:19:27.460
Михаил Непряхин: и сигент это

673
01:19:30.250 --> 01:19:38.660
Михаил Непряхин: сигенты это короче не Помню какое из них что короче Один из них это контраце вот когда контракт в контрольной консоли на за нажимаете

674
01:19:38.820 --> 01:19:53.800
Михаил Непряхин: ну вроде бы это сигнал а сектерм это губернатор посылает сигнал ну какой-то из этих я уже Не помню Какой губернетис о Какой контраце ну короче говоря Что бы У нас Мы Нажали. В контраце У нас сработал какой-то из этих сигналов

675
01:19:54.080 --> 01:20:02.670
Михаил Непряхин: так я его здесь запишу да я здесьжу Давайте Проверим какой срабатывает шанс чтобы Не обмануть вас Вот короче Он пишет Я нажимаю контрал Цен

676
01:20:03.690 --> 01:20:05.540
Михаил Непряхин: анон Стоп короче здесь

677
01:20:05.960 --> 01:20:07.170
Михаил Непряхин: интропт

678
01:20:07.480 --> 01:20:11.450
Михаил Непряхин: интропт Это шос

679
01:20:22.220 --> 01:20:23.290
Михаил Непряхин: добрин

680
01:20:23.640 --> 01:20:25.720
Михаил Непряхин: интеррок Я не помню какой Вы все таки

681
01:20:32.290 --> 01:20:33.380
Михаил Непряхин: нечто

682
01:20:33.770 --> 01:20:42.480
Михаил Непряхин: короче Так и Не Получилось узнать да ну. Один из них консенсус второй От куба посылается Поэтому два и Дальше Мы пишем Какой зимой пришел

683
01:20:42.800 --> 01:20:47.150
Михаил Непряхин: и как только он пришел Мы сразу, закрываем

684
01:20:47.460 --> 01:20:50.720
Михаил Непряхин: этот сигнальный. Канал стоп

685
01:20:51.040 --> 01:20:55.640
Михаил Непряхин: соответственно выходим из этого цикла как только вышли циклы закрываем сервер дан

686
01:20:56.060 --> 01:21:13.200
Михаил Непряхин: а в этом месте Мы понимаем когда Мы здесь Сможем прочитать значит сервер данн закрыт Мы печатаем Сервердан, ну и также с этим патроном там дальше потому, что стоп он Еще и в этом цикле Тоже Задействован так А почему управляющий, канал типа стракт ну короче говоря и

687
01:21:13.290 --> 01:21:23.350
Михаил Непряхин: по памяти да правильное предположение Что по памяти потому Что пустая структура в памяти ничего не занимает как бы ноль но на самом деле по большому счету тут и бум мог Быть

688
01:21:23.670 --> 01:21:34.270
Михаил Непряхин: легко но без разницы на самом деле Ну просто вот в этом случае когда мы Работаем с сигналами сигнальными Вот приняли использовать пустая структура

689
01:21:34.500 --> 01:21:38.690
Михаил Непряхин: и не то что тут памятью много Сэкономим на Этом просто Так принят хорошо

690
01:21:39.800 --> 01:21:41.470
Михаил Непряхин: и и

691
01:21:42.260 --> 01:21:57.320
Михаил Непряхин: и все короче говоря Вот Мы когда Мы прочитали эту Строчку Мы понимаем что сервер наш он все корректно Обработал завершился? И закрылся? И здесь Мы Помним все оружие не Работал

692
01:21:57.320 --> 01:22:07.270
Михаил Непряхин: то же самое здесь Дальше когда Мы здесь Прочитали Мы понимаем значит эта Гурутина вторая типа наша бизнес войка здесь крутилась ну или какая нибудь капка Могла война

693
01:22:07.390 --> 01:22:15.200
Михаил Непряхин: Тоже. Она получила сигнальный сигнал стоп этот цикл, из этого цикла Фор она вышла

694
01:22:15.730 --> 01:22:23.990
Михаил Непряхин: и закрыла вот эту дисккейсдан и вот он из киездан здесь мы тоже, разблокировались, и напечатались, кездан

695
01:22:24.810 --> 01:22:27.130
Михаил Непряхин: и вот

696
01:22:27.710 --> 01:22:33.520
Михаил Непряхин: а в реальной жизни обычно Вместо вот этого сигнального канала используется контекст

697
01:22:34.480 --> 01:22:49.370
Михаил Непряхин: и в этом вся Разница просто контекст еще Там дополнительный какой-то у Него функционал Есть ну и просто принят функции вот этот контекст передавать Но встречаются также Повсеместно и вот этот паттер с Реально обычным каналом

698
01:22:49.860 --> 01:22:56.300
Михаил Непряхин: и Тоже, и

699
01:22:56.820 --> 01:23:04.430
Михаил Непряхин: вот этот паттерн тоже Ммм очень важно понимать потому что когда вы будете потом делать мисс уша даун

700
01:23:05.390 --> 01:23:08.770
Михаил Непряхин: вы тоже этот порядок сможете воссоздать

701
01:23:09.080 --> 01:23:13.090
Михаил Непряхин: чтобы гарантировать то есть смотрите этот паттерн он гарантирует

702
01:23:13.520 --> 01:23:14.530
Михаил Непряхин: порядок

703
01:23:14.740 --> 01:23:28.350
Михаил Непряхин: что сперва я говорю здесь а остановитесь и я то говорю всем то есть я вот этот Сигнальный канал Стоп, как контекст везде разбрасываю ведь он вот здесь вот в кейсе участвует и здесь в кейсе и еще хоть,

704
01:23:28.430 --> 01:23:35.840
Михаил Непряхин: в тысячу бурутин я его передал и когда я сказал клоуз стоп я сказал остановитесь все

705
01:23:36.930 --> 01:23:48.820
Михаил Непряхин: а дальше они же могут долго останавливаться правильно они ж там какую-то работу делали они же кафка она там получила бач его надо обработать а

706
01:23:48.960 --> 01:24:00.980
Михаил Непряхин: там надо закомитить там сервер он же получил, сообщение ему же надо его отдать, им нужно там закрыть коннекшины ну и Так далее То есть у нас в серверах

707
01:24:01.140 --> 01:24:17.280
Михаил Непряхин: все постоянно. Работает и в Процессе обработки чего-то и Это чего-то Мгновенно никогда Не может Закрыться потому что Эти ресурсы надо закрыть Если Мы Возьмем и тут же Выйдем и типа Не будем ни. На чем обращать внимание

708
01:24:17.440 --> 01:24:23.630
Михаил Непряхин: То У нас обязательно будут потери что-то будет Незамечено что-то потеряется

709
01:24:23.770 --> 01:24:41.980
Михаил Непряхин: а что-то повиснет в воздухе какие-то и

710
01:24:42.360 --> 01:24:54.500
Михаил Непряхин: а дальше дожидаемся Что они действительно корректно завершили работу и подали нам то есть мы Им подали сигнал да и они нам подали сигнал

711
01:24:54.600 --> 01:25:03.960
Михаил Непряхин: а что они корректно завершили работу и вот этот вот патер нота называется грейс хуша даун ну в серверах этот апел. Он и так по молчанию реализован

712
01:25:04.120 --> 01:25:13.690
Михаил Непряхин: в кафке. Криво реализован в кафке. Приходится вот это вот делать руками потому что Там Кафка Гручена Крыва написана какими-то очень

713
01:25:13.870 --> 01:25:19.480
Михаил Непряхин: Талантливыми. Людьми Вот ну и иногда бывает его Прям Вот нужно юзать

714
01:25:21.290 --> 01:25:25.970
Михаил Непряхин: А чтобы точно вот понять что все Мы точно завершили и можем идти дальше

715
01:25:29.750 --> 01:25:35.010
Михаил Непряхин: есть вопрос у собеседника данила подольского

716
01:25:36.490 --> 01:25:40.250
Михаил Непряхин: аа и он такой тоже популярный значит его собеседник любит задавать

717
01:25:40.460 --> 01:25:45.030
Михаил Непряхин: значит представьте что У вас Есть грутина

718
01:25:45.380 --> 01:25:46.130
Михаил Непряхин: Я Не

719
01:25:46.600 --> 01:25:48.190
Михаил Непряхин: а которая Пишет

720
01:25:48.380 --> 01:25:51.240
Михаил Непряхин: вот как У нас здесь Дас ведь, У нас Есть грутина

721
01:25:52.270 --> 01:25:54.480
Михаил Непряхин: она пишет

722
01:25:54.820 --> 01:26:02.360
Михаил Непряхин: в Канал вот Что то да этот Канал мы Тут создали он у нас то есть мы мы из этого канала Читаем, а От Грутины пишет

723
01:26:03.360 --> 01:26:08.450
Михаил Непряхин: и смотрите Мы же Не, можем его закрыть вот если Мы Сейчас канал таск, Закроем,

724
01:26:09.690 --> 01:26:13.500
Михаил Непряхин: а эта грутина Будет писать Год паника уж нельзя писать закрытый канал

725
01:26:14.350 --> 01:26:16.980
Михаил Непряхин: а как тогда

726
01:26:17.170 --> 01:26:30.830
Михаил Непряхин: ууу сказать в грутине чтобы она закрылась вот и вы говорите с помощью сигнального канала вы создаете еще один сигнальный, канал передаете вы в эту Картину и в соответствии с селекте его слушаете и когда вы его закрываете, то, грузины закрывается

727
01:26:31.100 --> 01:26:38.160
Михаил Непряхин: и когда вы получили вот этот вот клоуус сервердан если, вам надо Вдруг обязательно закрыть вот этот канал

728
01:26:38.500 --> 01:26:46.250
Михаил Непряхин: здесь вы его сможете сделать ээ вот У Меня здесь кто еще этот пишет да ну короче вот здесь Мы точно знаем Уже в Канаву, никто не пишет

729
01:26:46.340 --> 01:27:02.910
Михаил Непряхин: и если нам. Важно закрыть канал статками вот Здесь вот вот в этом месте мы его безопасно закрываем то есть может опять, же быть такая задача на Собеседование типа вот ну вот прям один в один да что есть Канал в него все пишут

730
01:27:03.170 --> 01:27:07.030
Михаил Непряхин: как его закрыть так чтобы не было паники

731
01:27:07.140 --> 01:27:20.220
Михаил Непряхин: делайте сигнальный канал рассылайте его везде и убеждаетесь еще потом что те кто в него писал они перестали это делать а вы это убеждаетесь Вот с Помощью другого сигнального канала уже от них

732
01:27:20.360 --> 01:27:24.950
Михаил Непряхин: и уже тогда. Вы можете закрыть этот канал таск Точно зная что в Него никто не пишет

733
01:27:26.060 --> 01:27:36.920
Михаил Непряхин: дальше вот этот пример очень, Важно покрутить я вам тут вообще не даю лишнего прямо даю только Примеры Которые новые прямо, в которых в них только надо Разобраться. А дальше в Принципе вы уже Чего, угодно напишите

734
01:27:37.440 --> 01:27:41.000
Михаил Непряхин: та разрешена он принято в Голову. Всегда Делать через канала сигнала

735
01:27:41.150 --> 01:27:56.190
Михаил Непряхин: ну Да Да О Потому Что смотрите вы Же имеете дело. С Грутинами в Серверы Да у вас консерватор у вас везде гурутины ну там в библиотеке с подкапотами и ингурутины как Еще к грутинам сказать Что они должны закрыться в Голод одеваться через Канал

736
01:27:56.470 --> 01:28:00.170
Михаил Непряхин: Ну, через Контекст Делается Да Но

737
01:28:00.420 --> 01:28:02.010
Михаил Непряхин: в Контексте Внутри Канал

738
01:28:02.620 --> 01:28:05.480
Михаил Непряхин: Так Это Же Да конечно Когда-нибудь газированный Канал Открыт

739
01:28:05.700 --> 01:28:08.860
Михаил Непряхин: из него не Читается

740
01:28:09.340 --> 01:28:11.740
Михаил Непряхин: а если закрыт из не начнет читаться

741
01:28:12.150 --> 01:28:13.540
Михаил Непряхин: ну и

742
01:28:14.150 --> 01:28:15.200
Михаил Непряхин: как сказать

743
01:28:15.390 --> 01:28:24.240
Михаил Непряхин: не было не было не было ничего Подобного догошки написано голод и писали ну вот на коленке

744
01:28:24.410 --> 01:28:34.250
Михаил Непряхин: как как умели То есть это Сейчас уже там Можно Еще что-то придумать да и то Там в том же Раз Не То чтобы чего-то придумали

745
01:28:34.640 --> 01:28:40.040
Михаил Непряхин: так что ну Вот так он да надо понимать короче что закрытый Канал он читается

746
01:28:40.350 --> 01:28:44.510
Михаил Непряхин: не закрытые, не читают но странно согласен

747
01:28:45.640 --> 01:28:48.960
Михаил Непряхин: еще один паттер который

748
01:28:49.230 --> 01:28:51.860
Михаил Непряхин: может, пригодиться по жизни

749
01:28:52.470 --> 01:28:55.420
Михаил Непряхин: называется кувото между Падением кодом

750
01:28:56.120 --> 01:28:59.060
Михаил Непряхин: смотрите значит такая ситуация, Есть канал

751
01:28:59.170 --> 01:29:01.770
Михаил Непряхин: буфельзированный на Сто элементов

752
01:29:02.420 --> 01:29:03.800
Михаил Непряхин: Опять же таски

753
01:29:04.640 --> 01:29:07.120
Михаил Непряхин: но это таски

754
01:29:07.400 --> 01:29:11.170
Михаил Непряхин: короче прям Жесткие суперант Тяжелые Жесткие таски

755
01:29:11.280 --> 01:29:19.680
Михаил Непряхин: которая прям Сипию баунти и наше железо Одновременно может переварить Только три таких таски

756
01:29:20.080 --> 01:29:28.090
Михаил Непряхин: как же сделать ограничитель такой рет лимиттер да Что вот Только три таски Одновременно Мы можем. Переварить

757
01:29:28.310 --> 01:29:29.930
Михаил Непряхин: значит Мы Делаем канал

758
01:29:31.220 --> 01:29:41.290
Михаил Непряхин: с Пустыми структурами ну опять же типа это сигнальный канал Мы говорим Что это канал который используется Не По назначению Не как, канал А как, что то сигнальное Связанное

759
01:29:41.590 --> 01:29:46.010
Михаил Непряхин: Вот значит Запускаем десять, грузин

760
01:29:47.310 --> 01:29:48.710
Михаил Непряхин: и и

761
01:29:49.330 --> 01:30:06.240
Михаил Непряхин: А Вот запустить Мы зачем-то хотим, именно, десять грутин понятно, Что мы можем запустить три гурутина и Тогда как Бы все легко, Решается у нас параллель не только три но вот допустим у нас грузин много а мы в этих грутинах хотим, вот ограничения сделать только на три

762
01:30:06.390 --> 01:30:10.970
Михаил Непряхин: ну если, вы синтетический патруль Не спрашиваете почему просто пример

763
01:30:11.150 --> 01:30:17.980
Михаил Непряхин: значит вычитываем эти Таски вот этот Там буфер сто и

764
01:30:18.510 --> 01:30:21.490
Михаил Непряхин: когда Мы вычитали Одну таску

765
01:30:21.950 --> 01:30:25.850
Михаил Непряхин: Мы записываем пустую структуру в этот Канал с квотой

766
01:30:26.790 --> 01:30:33.470
Михаил Непряхин: Этим самым Мы квот Уберем то есть взяли квоту емкость канала уменьшилась на Один.

767
01:30:33.720 --> 01:30:37.000
Михаил Непряхин: То есть емкость уже стала. Два вот Мы ее взяли

768
01:30:37.550 --> 01:30:40.090
Михаил Непряхин: ну дальше работаем Эту трудную работу

769
01:30:40.660 --> 01:30:47.300
Михаил Непряхин: сипию баун какой-то и печатаем после секунды спим печатаем сообщения

770
01:30:47.560 --> 01:30:53.720
Михаил Непряхин: и квоту отпускаем То Есть Мы Читаем Из канала и Таким Образом Отпускаем квоту

771
01:30:54.330 --> 01:30:56.710
Михаил Непряхин: Мы Так Берем

772
01:30:59.640 --> 01:31:00.980
Михаил Непряхин: грань клоун

773
01:31:04.580 --> 01:31:06.230
Михаил Непряхин: Освобождаем квоту

774
01:31:06.990 --> 01:31:13.290
Михаил Непряхин: а Если вдруг Мы Уже взяли три коты Но тревожная сработала и три года взяли

775
01:31:13.810 --> 01:31:24.690
Михаил Непряхин: аа следующая грузия Которая Будет пытаться взять квоту она здесь заблокируется потому Что записать в Канал ничего нельзя

776
01:31:25.000 --> 01:31:28.340
Михаил Непряхин: потому. Что Он заполнен

777
01:31:28.530 --> 01:31:40.560
Михаил Непряхин: в нем Уже записаны три Структуры Пустых Он полностью заполнен и пока кто то не прочитает из канала какая То бурутина

778
01:31:40.820 --> 01:31:54.140
Михаил Непряхин: вот эта грутина записать него не сможет опять же тут как бы такая инверсия вроде и с канавами но вот Таким образом мы берем кого-то Таким отпускаем но Это, как бы такое мышление уже должно быть мышление на каналах оно тут немножко. Особенное

779
01:31:54.570 --> 01:32:06.880
Михаил Непряхин: и этот паттерн как, Раз, используется очень часто в библиотеках и

780
01:32:07.260 --> 01:32:11.610
Михаил Непряхин: и дальше тут в цикле мы получается сто. И

781
01:32:12.060 --> 01:32:17.540
Михаил Непряхин: аа стойте рации делаем пишем Эти, числа в Канал такс

782
01:32:17.680 --> 01:32:20.510
Михаил Непряхин: и спим минуту Мы спим

783
01:32:20.810 --> 01:32:26.060
Михаил Непряхин: зачем Мы спим минуту ну короче Тут Нет и никакого врез ваша дауна

784
01:32:26.650 --> 01:32:35.170
Михаил Непряхин: Чтоб не усложнять вот и видим как он себя ведет вот аведет оно на себя так что оно по три то есть вот у нас квота три вот оно по три выплевывает

785
01:32:35.570 --> 01:32:41.030
Михаил Непряхин: вот буквально недавно он писал какую-то задачу вот тоже, Использовал этотворкер

786
01:32:41.210 --> 01:33:06.020
Михаил Непряхин: и а таким образом по Сути

787
01:33:06.020 --> 01:33:07.990
Михаил Непряхин: у нас есть какой то ход по сервер

788
01:33:07.990 --> 01:33:14.950
Михаил Непряхин: вот вы говорите квота пятьдесят Что типа у вас. Одновременно вы можете принять только пятьдесят запросов

789
01:33:15.380 --> 01:33:25.630
Михаил Непряхин: а и вот на Входе У вас в ручке вы проверяете эту квоту если вы можете ее взять то есть записать в канал пустую структуру

790
01:33:25.630 --> 01:33:45.020
Михаил Непряхин: то вы идете дальше и выполняете эту работу если уже канал заполнен то есть, уже пятьдесят запросов к вам пришло вы их все взяли Никакие запросы Не завершились вы Отдаете статус ну. Вот можно даже Какой то нормальный статус четырнадцать двадцать девятое отдать, тумэнериккрест

791
01:33:45.020 --> 01:33:46.900
Михаил Непряхин: У нас спасибо в россии есть такое

792
01:33:46.930 --> 01:33:53.320
Михаил Непряхин: вот и дальше ну там на той стороне должны делать этот рай

793
01:33:54.170 --> 01:34:00.530
Михаил Непряхин: а вот потом когда работа выполнена в эту комнату отпускаете и все и соответственно у вас

794
01:34:02.120 --> 01:34:05.560
Михаил Непряхин: таким Образом вы Одновременно обрабатываете только пятьдесят вопросов

795
01:34:06.260 --> 01:34:10.450
Михаил Непряхин: вот же пример синтетический ну. Просто чтоб примерно как бы понимать где это можно зарезать

796
01:34:11.720 --> 01:34:15.110
Михаил Непряхин: потому что он очень простой как бы и вот довольно вязательный

797
01:34:16.460 --> 01:34:17.360
Михаил Непряхин: так

798
01:34:17.570 --> 01:34:22.560
Михаил Непряхин: а все смотрите с гурутинами И канавами вот

799
01:34:22.640 --> 01:34:41.110
Михаил Непряхин: вот то что надо посмотреть И

800
01:34:42.130 --> 01:34:45.060
Михаил Непряхин: а какая Разница между квота Симонов падронс

801
01:34:45.660 --> 01:34:55.650
Михаил Непряхин: ну И

802
01:34:55.930 --> 01:34:59.300
Михаил Непряхин: такаягуртина у роу

803
01:34:59.970 --> 01:35:09.880
Михаил Непряхин: можно уже вот так не делать но нормально работает это как бы вот это уже Устаревший синтез так можно не передавать

804
01:35:10.050 --> 01:35:12.960
Михаил Непряхин: просто можно По замыкания делать

805
01:35:13.660 --> 01:35:22.000
Михаил Непряхин: семафор да а потом в дефере отпускаете ну окей назовите ему форму как будет вообще неважно как это называется

806
01:35:27.320 --> 01:35:28.700
Михаил Непряхин: одно, значение

807
01:35:28.870 --> 01:35:32.200
Михаил Непряхин: ну здесь получать симу Фор Намного значения немного и Пустяков.

808
01:35:33.800 --> 01:35:38.750
Михаил Непряхин: И каких-то названий и

809
01:35:38.760 --> 01:35:54.630
Михаил Непряхин: и и

810
01:35:55.210 --> 01:35:56.260
Михаил Непряхин: Вот

811
01:35:56.540 --> 01:36:06.130
Михаил Непряхин: для того чтобы хоть как-то О чем-то говорить можете если вас поймет можете назвать Вместо код и симфонии я Встречал. Когда-то квоты и называли ну прям в ходе

812
01:36:08.590 --> 01:36:13.180
Михаил Непряхин: так давайте Вопросы, еще Есть По

813
01:36:13.640 --> 01:36:25.180
Михаил Непряхин: грутинным Каналам синхронизация вот этим всему то Есть мы пока к этому не будем долго возвращаться, а потом только когда Задачки будем решать еще к этому. Вернемся

814
01:36:26.710 --> 01:36:32.460
Михаил Непряхин: вообще насколько, это сложно и непонятно давайте можете обратно все-таки показать.

815
01:36:38.100 --> 01:36:41.110
Михаил Непряхин: Надо быть кто голосом хочет задать вопрос снова создавать

816
01:36:45.250 --> 01:36:46.090
Михаил Непряхин: на самом деле.

817
01:36:46.090 --> 01:36:49.610
David R: Есть вопросик

818
01:36:49.610 --> 01:37:08.340
David R: слэш размышления когда у нас оштите пенсильвер и мы принимаем Запросы. И мы не хотим, Ничем не Ограничивая принимать Там столько, Сколько сможем у нас запросы получается каждый запрос у нас обрабатывается в отдельной карутине и Мы запускаем ровно только рутину Сколько у нас процессорного Времени

819
01:37:08.770 --> 01:37:10.070
David R: вот когда.

820
01:37:10.070 --> 01:37:14.450
Михаил Непряхин: Даже Не Сколько У нас Процессов Во времени. А вообще прямо. Запустится Прям

821
01:37:14.730 --> 01:37:27.030
Михаил Непряхин: ну Сколько Во-первых У нас ядер условно Сколько там гомок срок задано столько и спустится Одновременно а вот Сколько придет запросов на каждый запрос просто по Бурутине будет запускаться и все и там нет никакого да.

822
01:37:27.040 --> 01:37:46.280
David R: И тут, и тут, вопрос вот если Мы хотим? Использовать процессор вот ровно по его ресурсам не вот если Мы Запустим карутин больше чем процесс сможет переварить они получается у нас будут где-то Там в очереди простаивать а если Мы будем, меньше запускать тогда получается У нас

823
01:37:46.280 --> 01:37:50.570
David R: процессор будет Простаивать вот если какой-нибудь

824
01:37:50.570 --> 01:38:00.420
David R: Аля балансирующий, Какой нибудь инструмент который запускает вот ровно столько карутин Сколько У нас свободных ресурсов вот чтобы его забить там под сто процентов но они больше.

825
01:38:01.320 --> 01:38:07.500
Михаил Непряхин: Нет это только опытным Путем и рейд лимитами деваться То есть.

826
01:38:07.500 --> 01:38:28.180
David R: Это даже больше вопрос не когда мы принимаем запросы а например, мы Хотим? Отдавать запрос и.

827
01:38:29.190 --> 01:38:48.980
Михаил Непряхин: Но вообще дефолт это вот сколько У вас есть, этих ядер процессора ну, То есть, гоумакс-прокс вот У вас сколько есть вы по его количеству и запускаете гурутины например, вот есть у нас работа с посгрей

828
01:38:49.290 --> 01:38:52.780
Михаил Непряхин: а с поздравием работа м

829
01:38:53.300 --> 01:39:09.250
Михаил Непряхин: здесь значит библиотека Пгекс и Мы работаем с пгэкспулом то есть У нас гошки удобно сделали Что не надо даже погасить союз потому Что У нас погребаунтер просто из Коробки в Библиотеке он

830
01:39:09.420 --> 01:39:16.070
Михаил Непряхин: Ну многие Не знают до Сих Пор юз погребаался все равно Вообще как бы если Можно Не юзать то вообще Голову. Это нормально

831
01:39:16.470 --> 01:39:22.980
Михаил Непряхин: работает ну и вот и вот вопрос стоет значит в этом Погабалансе по Этот пул воркеров

832
01:39:23.470 --> 01:39:26.990
Михаил Непряхин: и вопрос вот допустим смотрите по взглядам

833
01:39:27.960 --> 01:39:32.020
Михаил Непряхин: воскрес а у нас пол кворкеров

834
01:39:32.250 --> 01:39:33.600
Михаил Непряхин: так вот

835
01:39:33.810 --> 01:39:44.020
Михаил Непряхин: какое какое значение этому полуворкеров делать а ну простой ответ вот у вас есть два гомок прокс Ну делайте пул. Два

836
01:39:44.210 --> 01:39:49.980
Михаил Непряхин: если У вас десять Ну сделайте пул. На десять потому Что

837
01:39:50.270 --> 01:39:53.410
Михаил Непряхин: чем У вас больше гуртин

838
01:39:53.810 --> 01:40:06.910
Михаил Непряхин: тем они будут больше за ресурсы конкурировать и как я говорил несмотря на то что гурутина это легковесный поток но тем не менее это как бы все равно ведь поток

839
01:40:08.870 --> 01:40:09.910
Михаил Непряхин: как бы

840
01:40:10.660 --> 01:40:27.920
Михаил Непряхин: ну вот я много очень экспериментов делал там в Свое, время просто как бы пытаясь понять? Там понимаете такая Зависимость нелинейная типа вы думаете Что Сейчас я накину бурутин и все будет работать быстрее накидывайте ну работать быстрее Но не во столько Раз, во сколько вы накинули гурутин

841
01:40:28.050 --> 01:40:46.110
Михаил Непряхин: и там постепенно выясняется что и

842
01:40:46.360 --> 01:40:49.000
Михаил Непряхин: и как бы вот

843
01:40:49.760 --> 01:40:51.830
Михаил Непряхин: по сути да.

844
01:40:51.830 --> 01:41:14.960
David R: Ну Тут в сгреб получится если. Запускать пол гомокспрокс если. Если. Грузия ожидает ответа на Секунду, то получается У нас будут работать в Секунду от Века рутина То есть они Запустились Секунду подождали Эти Две Карутины они Завершились и Так тоже получается как-то Не Очень эффективно но если например, Мы отправляем два запроса в двух каруенах

845
01:41:14.960 --> 01:41:20.570
David R: и с той стороны Мы эти Две, Карутины ожидают Там целую Секунду а другие Мы не можем запустить больше.

846
01:41:20.880 --> 01:41:31.350
Михаил Непряхин: Оно Там хитрее, тампу Это именно типа Аналог гоу макпрокса? То Есть вот Сколько Одновременно грутин будет работать только на

847
01:41:31.430 --> 01:41:41.870
Михаил Непряхин: коннекшины распазгрей а реально-то в этих двух грутинах там ну. Там будет много запросов работать То есть как Бы там

848
01:41:42.090 --> 01:41:59.690
Михаил Непряхин: Да там два слоя то есть один это именно коннекшины типа похожие на вагомок Прокса а так-то запросов У вас будет ну сколько вы запросов столкаете стройка Льго То Есть Там Не Будет с Этим Проблем ну Там по-своему может быть Не очень удачный пример тот способ герой потому Что надо знать внутреннее устройство

849
01:41:59.770 --> 01:42:12.180
Михаил Непряхин: Но короче Смысл в том Что с одной стороны Можете Не париться и Всегда просто Поднимать Э гурутину если хотите, что-то параллельно там запустить запускаете бурутину и не паритесь

850
01:42:13.130 --> 01:42:26.680
Михаил Непряхин: а если, вы ну как делает это сервер то сервер просто вот пришел запрос поднял. Грудью и Пришел запрос поднял грутину и все и прям пришло тридцать тысяч Запросов тридцать тысяч грутин Год Поднята

851
01:42:26.940 --> 01:42:33.220
Михаил Непряхин: аа, если уж вы хотите, там прямо, париться за ресурсы но тогда вы делаете полворкеров

852
01:42:33.510 --> 01:42:40.360
Михаил Непряхин: и Просто немножко сложнее получается архитектура что у Вас разгребает это все дело пуворкеров

853
01:42:40.600 --> 01:42:46.420
Михаил Непряхин: но это Правда даже в Гоу По дефолту стандарты так Не сделали

854
01:42:47.090 --> 01:42:57.440
Михаил Непряхин: Поэтому здесь Нет короче Рецепта надо просто пробовать экспериментировать и Ну рисовать графики в Графане

855
01:42:57.630 --> 01:43:04.650
Михаил Непряхин: Ну просто вы провели эксперимент такой такой такой и посмотрели и Что будет лучше

856
01:43:04.750 --> 01:43:06.890
Михаил Непряхин: и тогда вымираете То Есть

857
01:43:07.020 --> 01:43:09.440
Михаил Непряхин: только Так опытным путем

858
01:43:11.440 --> 01:43:12.530
Михаил Непряхин: так

859
01:43:17.130 --> 01:43:24.010
Михаил Непряхин: так Трое я Столкнулся Подумал что так для Меня сложно но поройчеров потыкаться например иногда

860
01:43:24.470 --> 01:43:30.370
Михаил Непряхин: но тема сложная да она видите она Именно что вы пока руками

861
01:43:30.470 --> 01:43:33.270
Михаил Непряхин: вот это вот на то что я вам сказала не протыкайтесь

862
01:43:33.450 --> 01:43:46.590
Михаил Непряхин: э ну даже если, вы руками потыкаетесь вы все равно быстро Сейчас забудете То есть вот чтобы это Прямо отложилось с этим надо поработать на несколько месяцев Прям какую-то задачу решить

863
01:43:46.680 --> 01:43:57.750
Михаил Непряхин: ну вот что я вам предлагаю либо плут пареры писать как банальный какой-то там паук веб паук допустим просто Обходить сайты

864
01:43:58.030 --> 01:44:12.770
Михаил Непряхин: Ну там вы еще Столкнетесь с прогсями Что Там прокси севера надо Будет не знаю. Гугл. Можете поразить ногу Потому Что сами себя не дают партия короче какой-то Парсер Многопоточный и вот с пулом воркером как бы точно разбирайтесь

865
01:44:13.170 --> 01:44:14.360
Михаил Непряхин: а на

866
01:44:14.590 --> 01:44:18.980
Михаил Непряхин: а так надо какие то писать библиотеки

867
01:44:19.640 --> 01:44:25.130
Михаил Непряхин: либо либо например. Написать свой этот

868
01:44:25.850 --> 01:44:39.850
Михаил Непряхин: и очередь сообщений типа брокер месседж брокер типа кафки Свою написатель мессадж мьюзик этот робиттом кью что-то такое то есть вот там вот вы Вот это Вот еще как-то сможете заюзать

869
01:44:41.240 --> 01:44:44.060
Михаил Непряхин: Вот Но Так оно и очень Быстро, забывается.

870
01:44:44.620 --> 01:44:45.670
Илиас Эззахид: Можно вопрос голос.

871
01:44:45.670 --> 01:44:47.070
Михаил Непряхин: Да давайте начнем.

872
01:44:47.570 --> 01:44:53.640
Илиас Эззахид: Ну это более философский такой вопрос вот у нас мы бываем

873
01:44:53.710 --> 01:45:10.420
Илиас Эззахид: на сипе у пауты и бывают айо баунд и Зависимо от одного и другого нашего Мышления О конкурентности да и вообще О использовании каналах паторных должно измениться Зависимо от какого ну айо. Баудер или если биобаунд.

874
01:45:10.890 --> 01:45:22.130
Михаил Непряхин: Ну да да то есть смотрите если у вас ну во-первых смотрите мы должны изначально понимать у нас сколько го макс прокс да

875
01:45:23.510 --> 01:45:25.990
Михаил Непряхин: есть, ли у нас он

876
01:45:26.190 --> 01:45:27.290
Михаил Непряхин: один

877
01:45:27.670 --> 01:45:39.420
Михаил Непряхин: или два а так чаще, всего то есть, понимаете больше, двух оно вообще ну почти никогда Не бывает то Есть два это типа ну круто там вам дали ресурсов но вот Так он чаще, всего один

878
01:45:40.150 --> 01:45:51.140
Михаил Непряхин: и сами понимаете как бы смысла нет на одном, ядре запускать сипию баунд в гуру тинах

879
01:45:51.220 --> 01:45:57.990
Михаил Непряхин: потому что оцепию баун просто вас ну как вы целиком берете и все процессорное время используете

880
01:45:58.070 --> 01:46:14.610
Михаил Непряхин: а если вы будете то же самое делать новгу рутинах какая Разница вы все равно на одном ядре Это будете делать но просто. Вы Еще будете тратить Время на переключение между Этими Гурутинами, Поэтому гору тины ну. Хорошо Допустим вот если. У вас два ядра,

881
01:46:15.410 --> 01:46:34.210
Михаил Непряхин: тогда уже вы можете в двух Грутинах Сделать Свой сипиюбаум да то есть как бы тогда тут как Будто бы имеет смысл Но Не больше двух потому что, когда речь идет, о Сибири баунде то эта вот строгая параллельность Она Должна быть По Количеству вот этого гомакс-прокса

882
01:46:34.350 --> 01:46:42.570
Михаил Непряхин: вот Поэтому в целом часто Видишь ну вот как у новичков? Такие Дурацкие. Примеры когда вот Хотят поработать

883
01:46:42.690 --> 01:46:48.200
Михаил Непряхин: с бурутинами, но ведь задача не встречается таких. Чтобы можно было работать с бутинами

884
01:46:48.200 --> 01:46:55.600
Михаил Непряхин: то есть как бы дают задачу простые коктейль там Нет возможности его рутины союзы и юзают грутины просто там например опендят

885
01:46:55.600 --> 01:47:15.650
Михаил Непряхин: и допустим надо много символов много что-то запомнить с лайсами они создают два свайса и в двух Грутинах в эти два свайся опенди а потом Их соединяют ну короче какой-то такой бред вообще как бы бессмысленный в общем гурутины и имеет смысл использовать только Там где есть либо сеть

886
01:47:15.880 --> 01:47:23.970
Михаил Непряхин: либо вы ну Логически вас допустим в одном приложении есть и сервер и Ворппер и кафка конюмер

887
01:47:24.060 --> 01:47:43.410
Михаил Непряхин: и это как бы у вас получается. И

888
01:47:43.410 --> 01:47:51.640
Михаил Непряхин: вот а вот это как бы гоухо хорошо позволяет делать но одну либо вы работаете с сетью, если вы роботе сетью, вот здесь бурутины, они прямо, раскрываются

889
01:47:51.770 --> 01:48:00.620
Михаил Непряхин: вот Поэтому если учуть матрица перемножаете смысл делать Не, этот в гурутинах и Только если У вас немного Ядерного Оружия есть.

890
01:48:04.530 --> 01:48:23.770
Илиас Эззахид: Можно тогда Еще один вопрос и.

891
01:48:24.660 --> 01:48:38.250
Михаил Непряхин: Нет они не прибиваются гвоздями потоки то есть есть здесь проблемка небольшая что вы Можете ну как бы выполнять одну работу на одном метре

892
01:48:38.400 --> 01:48:53.910
Михаил Непряхин: потом раз и поменяться с Другой, грутиной и на разных потоках они это будут делать и потом раз и опять, поменяться то есть вы тут кошевым Или потом Раз, поменяли Там крыши вымыли и вот так вот как бы ну, это вот такая небольшая неэффективность есть

893
01:48:54.050 --> 01:49:13.880
Михаил Непряхин: то есть вы вообще никак, не контролируете на каком потоке чтобы отработать то есть в этом идее ну типа знаете как эээ Там в девяностые Прорыв случился с автоматическим управлением памяти когда появилась Там бетон Джава Там руби

894
01:49:13.960 --> 01:49:28.760
Михаил Непряхин: и языки Которые с и

895
01:49:29.310 --> 01:49:43.620
Михаил Непряхин: Ядрами сипию потоками и вы вообще как бы ничего не контролируете вы просто говорите Что, ну. Желаю, исполнить это в двух потоках, и гоу как-то это Делает под Копожем

896
01:49:43.850 --> 01:49:48.140
Михаил Непряхин: Магически даже если потоков не два а Один, все равно сделают

897
01:49:48.720 --> 01:49:56.980
Михаил Непряхин: Но вот Поэтому как бы это вот автоматическое управление потоками тут как бы и есть небольшие, минусы что гвоздями ничего не пробивается

898
01:50:03.440 --> 01:50:07.490
Михаил Непряхин: так Ммм Давайте Вопросы, Еще есть

899
01:50:13.460 --> 01:50:19.390
Михаил Непряхин: так есть ли такое что вы прямо. Вообще очень сложно вообще вообще ничего не поняли

900
01:50:20.180 --> 01:50:26.390
Михаил Непряхин: или все равно более менее в общих чертах это более или менее понятно,

901
01:50:27.800 --> 01:50:32.330
Михаил Непряхин: ну, по крайней мере что это зачем это Или хотя бы идейно потому что

902
01:50:32.610 --> 01:50:42.380
Михаил Непряхин: Ну типа синтаксис да тут в Синтаксисе очень много подводных камней но если Вот хотя бы Вы Примерно понимаете зачем Это нужно и как она Там

903
01:50:43.060 --> 01:50:45.050
Михаил Непряхин: Распределяется По потокам

904
01:50:45.450 --> 01:50:54.760
Михаил Непряхин: То ну хотя бы с помощью Чата трепет вы сперва что-то сможете написать а потом уже там посмотреть как оно работает

905
01:50:59.600 --> 01:51:17.820
Михаил Непряхин: Окей на самом деле Вы здесь можете особо не париться и если даже ну правда я понимаю здесь сложно как бы это вообще отдельный фрейнморк но он игры в жизни как бы кроме как на собеседованиях больше нигде не нужен а задачки именно, которые Собеседование мы будем, Решать

906
01:51:18.050 --> 01:51:21.580
Михаил Непряхин: вот Поэтому ну потом когда столкнетесь

907
01:51:22.210 --> 01:51:26.910
Михаил Непряхин: ну в жизни когда надо Что то вот Будет сделать вот только тогда вы с Этим и До конца разберетесь

908
01:51:27.250 --> 01:51:45.240
Михаил Непряхин: и просто вы Очень Не скоро, с Этим столкнетесь, видите как бы эти вещи дают писать только синьористым синьором у кого, большой опыт. С этим а и

909
01:51:45.330 --> 01:51:51.540
Михаил Непряхин: в Обычной жизни в этом обычном круде в типичном приложении.

910
01:51:51.690 --> 01:52:11.210
Михаил Непряхин: Просто Это Не Используется вы используете, уже готовы библиотеки которая под капотом и

911
01:52:11.300 --> 01:52:27.600
Михаил Непряхин: и Поэтому как бы даже и заюзать Это особо негде Я Уж, Не говорю О каких-то еще Сложных патронах и их вообще в Принципе Вы Никогда Не увидите то есть Пулор. Испуган моргеров Бы когда-то хотя Бы столкнуться Не говоря уже о том о чем-то более сложном тему, форуме Там

912
01:52:29.830 --> 01:52:32.210
Михаил Непряхин: а так ладно тут

913
01:52:33.540 --> 01:52:46.240
Михаил Непряхин: я не стал сильно гнать чтобы побольше вам рассказать все таки Про рутинные потоки потому Что Мы все равно вот к ним больше уже и особо так не вернемся подробно а в Следующий Раз Начнем

914
01:52:46.420 --> 01:52:48.740
Михаил Непряхин: аааа с докера из кубернетиса

915
01:52:49.210 --> 01:52:51.170
Михаил Непряхин: а тут минимальные какие то примеры

916
01:52:52.960 --> 01:52:53.810
Михаил Непряхин: так

917
01:52:58.610 --> 01:53:02.690
Михаил Непряхин: ну ладно все тогда, здесь вопросов, нет все задавать от следующего раза

918
01:53:04.980 --> 01:53:06.000
Михаил Непряхин: ты четверга

919
01:53:07.610 --> 01:53:09.060
Михаил Непряхин: да пока.

