WEBVTT

1
00:04:39.530 --> 00:04:40.770
Михаил Непряхин: Всем привет

2
00:04:42.790 --> 00:04:44.250
Михаил Непряхин: как видно слышно

3
00:04:50.680 --> 00:04:54.880
Михаил Непряхин: так тормозит не тормозит Два Камера Секунды Или больше

4
00:04:56.970 --> 00:04:58.010
Михаил Непряхин: тормозит

5
00:05:00.350 --> 00:05:01.410
Михаил Непряхин: печальном

6
00:05:01.950 --> 00:05:07.390
Михаил Непряхин: ну либо качество надо уменьшать у меня тут тысяча четыреста получается

7
00:05:08.700 --> 00:05:13.450
Михаил Непряхин: ну вебка нет если вебка схватят шоу то это ладно это не страшно

8
00:05:13.780 --> 00:05:16.880
Михаил Непряхин: лишь бы само. Вот это вот

9
00:05:18.130 --> 00:05:19.840
Михаил Непряхин: не тормозила

10
00:05:20.790 --> 00:05:22.540
Михаил Непряхин: улыбка так. Да кучу

11
00:05:24.990 --> 00:05:25.810
Михаил Непряхин: так.

12
00:05:26.860 --> 00:05:30.400
Михаил Непряхин: Ну смотрите есть такая

13
00:05:30.630 --> 00:05:34.070
Михаил Непряхин: особенность работы с интерфейсами вообще кстати

14
00:05:34.860 --> 00:05:41.690
Михаил Непряхин: такую задачу вроде бы Сейчас Не задают А это скорее показывают Так для общего

15
00:05:42.020 --> 00:05:46.940
Михаил Непряхин: развитие и для Понимания насиверов

16
00:05:47.150 --> 00:05:51.230
Михаил Непряхин: вот но что-то подобное Раньше спрашивали

17
00:05:52.330 --> 00:05:52.990
Михаил Непряхин: да

18
00:05:54.990 --> 00:06:01.510
Михаил Непряхин: значит смотрите попробуйте Ответить э Что Увидит, Программа Давайте Я прочитаю

19
00:06:01.840 --> 00:06:03.700
Михаил Непряхин: Ну, Во-первых У нас Есть интерфейс

20
00:06:04.640 --> 00:06:08.560
Михаил Непряхин: и это просто один Метод

21
00:06:08.670 --> 00:06:26.170
Михаил Непряхин: то Есть Ведь интерфейс может Быть тоже с маленькой буквы в Интерфейсе Метод может Быть с маленькой буквы ну просто значит Что он будет Работать Только Вот в одном своем, пакете то есть за пределы пакета он не может выйти потому что там его гм никто не увидит нельзя воспользоваться вот этим интерфейсом

22
00:06:27.540 --> 00:06:34.060
Михаил Непряхин: а Наверняка воспользоваться можно было ответил он с большой сам буквы Но метод у Него вызвать не получится

23
00:06:34.170 --> 00:06:35.380
Михаил Непряхин: эээ

24
00:06:35.620 --> 00:06:39.810
Михаил Непряхин: дальше есть функция которая этот интерфейс Принимает

25
00:06:40.030 --> 00:06:44.230
Михаил Непряхин: и Внутри себя просто вызывает этот интрофисный метод

26
00:06:45.610 --> 00:06:49.070
Михаил Непряхин: с Другой стороны есть Структура

27
00:06:49.780 --> 00:06:54.760
Михаил Непряхин: у нее Внутри Пало от Поля стринговая и у нее есть метод

28
00:06:55.340 --> 00:06:56.620
Михаил Непряхин: метод

29
00:06:57.020 --> 00:06:57.680
Михаил Непряхин: да

30
00:06:58.680 --> 00:07:04.500
Михаил Непряхин: обращается к полю то есть Пишет записывает в поле строковелью

31
00:07:04.630 --> 00:07:06.740
Михаил Непряхин: и печатать Что метод был вызван

32
00:07:07.720 --> 00:07:09.000
Михаил Непряхин: и самкот

33
00:07:09.330 --> 00:07:11.140
Михаил Непряхин: Мы создаем

34
00:07:11.790 --> 00:07:13.190
Михаил Непряхин: Пустую структуру

35
00:07:13.520 --> 00:07:21.550
Михаил Непряхин: если Мы Не указываем Никакие поля то значит поля будут Инициированы Зеркалью то Есть повод будет Ранен

36
00:07:21.880 --> 00:07:23.100
Михаил Непряхин: пустой строке

37
00:07:23.380 --> 00:07:28.280
Михаил Непряхин: присылаемые в переменную, тэ эту перемену отпе передаем функцию вот в эту функцию

38
00:07:28.960 --> 00:07:31.020
Михаил Непряхин: в тот момент когда Мы эту

39
00:07:31.170 --> 00:07:40.070
Михаил Непряхин: структуру передаем функцию она вот здесь превращается внутри винтерфейс и мы уже от нее вызываем интрофисный метод

40
00:07:41.110 --> 00:07:42.630
Михаил Непряхин: им Печатаем

41
00:07:42.780 --> 00:07:46.500
Михаил Непряхин: Какое значение пайлот Какое значение Приводы Сейчас

42
00:07:47.550 --> 00:07:53.180
Михаил Непряхин: аа а в методе мы вот как, Раз, это значение Привода и назначаем значит Что ваши ставки

43
00:07:54.260 --> 00:07:58.880
Михаил Непряхин: Мы ну Что вы ведет программу, то есть вот интересует этот момент

44
00:07:59.040 --> 00:08:00.580
Михаил Непряхин: Поэтому и

45
00:08:01.060 --> 00:08:03.540
Михаил Непряхин: запишется Или не запишется как вы думаете,

46
00:08:05.900 --> 00:08:07.050
Михаил Непряхин: пустая Строка

47
00:08:08.240 --> 00:08:18.740
Михаил Непряхин: пустая Строка по идее Должна быть Вот Давайте кто хочет Голосом ответить Вопрос почему Там будет пустая строка ну во Первых это правда да то есть если Мы запустим пустая строка вопрос почему.

48
00:08:20.810 --> 00:08:21.150
Konstantin: Да

49
00:08:21.280 --> 00:08:22.310
Konstantin: здорово.

50
00:08:22.570 --> 00:08:23.550
Михаил Непряхин: Давайте.

51
00:08:23.750 --> 00:08:27.170
dmitriy: Ну Потому Что мы Не по Указатели Передаем.

52
00:08:28.030 --> 00:08:29.990
Михаил Непряхин: Вот сюда они по указателю передаем.

53
00:08:29.990 --> 00:08:33.600
dmitriy: Ну да и получается Мы Сделаем Копию и в корзину.

54
00:08:35.919 --> 00:08:37.400
Михаил Непряхин: Окей смотрите

55
00:08:37.990 --> 00:08:40.679
Михаил Непряхин: есть еще все согласны с этим.

56
00:08:40.960 --> 00:08:43.590
David R: Аа есть другая идея.

57
00:08:43.760 --> 00:08:44.260
Михаил Непряхин: Давайте.

58
00:08:44.260 --> 00:08:51.130
David R: Не этот же у нас в самом низ Двадцать четвертая Строка функция принимает аа

59
00:08:51.420 --> 00:09:05.750
David R: в структуру и в Структуре мы пайлоту присматриваем Вэлью Но так как У нас в функцию Структуры Передается по Копию а не по указателю вот это Изменение, Которое Мы здесь вносим оно не отобразится в головной структуре.

60
00:09:05.960 --> 00:09:06.850
Михаил Непряхин: Ммм

61
00:09:07.270 --> 00:09:09.870
Михаил Непряхин: Так ну хорошо. Но это уже хорошие, рассуждения

62
00:09:10.820 --> 00:09:15.770
Михаил Непряхин: значит Проведем Эксперимент Давайте значит добавим сюда указатель

63
00:09:16.710 --> 00:09:23.970
Михаил Непряхин: ну точнее Даже вот для удобства вот здесь сразу создадим по указателю ти у нас теперь указатель перед его указатель

64
00:09:24.200 --> 00:09:26.250
Михаил Непряхин: и значит печатаем

65
00:09:27.590 --> 00:09:29.210
Михаил Непряхин: все равно пусто

66
00:09:30.040 --> 00:09:33.070
Михаил Непряхин: какие есть соображения уже по указателю передали.

67
00:09:35.940 --> 00:09:36.960
Илиас Эззахид: Мумизис.

68
00:09:36.960 --> 00:09:38.440
Konstantin: Оно не использует указатель.

69
00:09:39.440 --> 00:09:43.350
Михаил Непряхин: Так Что Что еще раз методы все равно Не Используют указатель.

70
00:09:43.580 --> 00:09:49.570
David R: Да указатель должен быть в другом месте вот тут, должен быть указатель где Сейчас курсор ааа.

71
00:09:49.570 --> 00:09:56.880
Михаил Непряхин: Ага хорошо так здесь Я убрал. Указатель так здесь Добавляем здесь Добавляем указатель

72
00:09:58.070 --> 00:09:59.780
Михаил Непряхин: так Пробам

73
00:10:00.830 --> 00:10:03.680
Михаил Непряхин: значит нам Программа, говорит

74
00:10:04.080 --> 00:10:07.980
Михаил Непряхин: Что ты ну короче тут длинное сообщение. С учетом

75
00:10:08.440 --> 00:10:15.970
Михаил Непряхин: короче я не могу здесь принять Ээ структуру по значению

76
00:10:16.450 --> 00:10:19.330
Михаил Непряхин: потому что здесь Есть Метод по указателю

77
00:10:20.590 --> 00:10:22.140
Михаил Непряхин: короче особенности такая

78
00:10:22.460 --> 00:10:25.510
Михаил Непряхин: Что и вот его здесь должен быть указатель

79
00:10:25.860 --> 00:10:28.150
Михаил Непряхин: и вот здесь мы должны работать по указателю

80
00:10:28.620 --> 00:10:33.310
Михаил Непряхин: и вот тогда оно работает так как мы ожидали

81
00:10:34.170 --> 00:10:37.170
Михаил Непряхин: теперь, Давайте разбираться вообще

82
00:10:37.650 --> 00:10:39.130
Михаил Непряхин: что это такое

83
00:10:39.290 --> 00:10:40.420
Михаил Непряхин: и зачем

84
00:10:41.470 --> 00:10:42.850
Михаил Непряхин: ну смотрите

85
00:10:43.930 --> 00:10:45.040
Михаил Непряхин: во-первых

86
00:10:45.910 --> 00:11:02.080
Михаил Непряхин: Всегда, читайте ли север вот когда вот запутались хотите, разобраться Всегда, его ставьте вот сюда вот вперед, потому что ведь Это, То же самое да То есть вот эта вот запись это просто сахар вот над этим

87
00:11:02.430 --> 00:11:05.940
Михаил Непряхин: То есть как бы это просто первый метод

88
00:11:06.060 --> 00:11:10.370
Михаил Непряхин: получает структуру просто первым аргументом

89
00:11:10.470 --> 00:11:17.480
Михаил Непряхин: просто вот ее вместо этого вынесли вот сюда для того чтобы подчеркнуть что вот это метод но это вот То Же самое

90
00:11:18.510 --> 00:11:25.950
Михаил Непряхин: и дальше вы смотрите как Мы эту структуру получаем как по значению Или как указатель

91
00:11:27.510 --> 00:11:28.960
Михаил Непряхин: и и

92
00:11:30.210 --> 00:11:31.330
Михаил Непряхин: Вернем

93
00:11:31.560 --> 00:11:37.860
Михаил Непряхин: дальше смотри когда Мы видим вот перед Собой такую сигнатуру Мы видим Что Мы

94
00:11:38.120 --> 00:11:40.350
Михаил Непряхин: по значению используем

95
00:11:40.490 --> 00:11:41.940
Михаил Непряхин: структуру

96
00:11:42.230 --> 00:11:46.610
Михаил Непряхин: Что нам Об этом как бы Что нам Дает эта Информация

97
00:11:47.130 --> 00:11:52.610
Михаил Непряхин: то Что Мы работаем с копией исключительно с копией

98
00:11:52.950 --> 00:11:58.890
Михаил Непряхин: Что, это значит значит Мы если Там собираемся что-то менять вот поменяли Мы

99
00:11:59.110 --> 00:12:09.850
Михаил Непряхин: Мы это изменение сделали вот только в Этой локальной копии потому что все аргументы в функцию они Всегда приходят

100
00:12:09.850 --> 00:12:19.630
Михаил Непряхин: через копирование мы Всегда получаем копию просто иногда копию на указатель да а иногда копию объекта Так вот здесь Копия объекта

101
00:12:19.650 --> 00:12:28.440
Михаил Непряхин: вот мы получили эту копию объекта и поменяли у нее паевод Изменилось ли оно в оригинальном объекте тот который здесь был связан

102
00:12:28.860 --> 00:12:31.660
Михаил Непряхин: конечно нет потому что работали с копией

103
00:12:32.390 --> 00:12:49.880
Михаил Непряхин: это очень важно понимать потому что гоу Не запрещает это делать Казалось бы это действие Бессмысленное ну что толку Мы Меняем по еготу копии но ведь, Голову. Не знает может быть в этом идее может быть Там Это в методе где-то там дальше Это имеет смысл То Есть Этой проверки Нет

104
00:12:50.560 --> 00:13:07.070
Михаил Непряхин: Поэтому Первая опасность которая Есть когда вы работаете вот без указателя вот по России, по значению даже неважно Там Выше было бы по указателю не было по указателю вот просто если вы Видите что это север полук по значению

105
00:13:07.070 --> 00:13:13.710
Михаил Непряхин: это значит Что У вас будет копия это значит Что все Что вы там внутри попытаетесь поменять

106
00:13:13.710 --> 00:13:18.390
Михаил Непряхин: вот с этим изначальным объектом вот с этим изначальным объектом

107
00:13:18.700 --> 00:13:23.000
Михаил Непряхин: он этого изменения не увидит потому что Вы будете менять это локально

108
00:13:23.540 --> 00:13:31.040
Михаил Непряхин: это прямо, вот когда-нибудь вы на эти корабли наступите если будете работать вот по рассеверам по значению

109
00:13:31.660 --> 00:13:32.940
Михаил Непряхин: какое решение

110
00:13:33.730 --> 00:13:35.760
Михаил Непряхин: люди просто везде лепят

111
00:13:36.390 --> 00:13:38.010
Михаил Непряхин: вот так вот указатели,

112
00:13:38.210 --> 00:13:42.060
Михаил Непряхин: именно для того чтобы Не, подорваться вот на Этой особенности

113
00:13:42.870 --> 00:13:48.160
Михаил Непряхин: когда У нас здесь указатель если Мы чего-то меняемся объектом он вот в оригинальном объекте и Поменяется

114
00:13:48.460 --> 00:13:53.910
Михаил Непряхин: Но понимаете в чем дело когда У вас вы видите Что вы работаете с указателем

115
00:13:54.200 --> 00:13:59.050
Михаил Непряхин: Это как бы Маркер он говорит о том что скорее всего вы хотите, что-то менять

116
00:13:59.830 --> 00:14:01.160
Михаил Непряхин: и

117
00:14:01.610 --> 00:14:04.920
Михаил Непряхин: здесь важно просто понимать что

118
00:14:05.800 --> 00:14:14.180
Михаил Непряхин: есть Разница если. Вы видите такую сигнатуру это значит что внутри Метода Вы можете как, то изменять этот объект

119
00:14:14.330 --> 00:14:18.390
Михаил Непряхин: а если. Вы видите такую сигнатуру это значит Что Гарантировано

120
00:14:18.550 --> 00:14:23.390
Михаил Непряхин: все Что Будет происходить в методе Не изменит изначальный объект

121
00:14:23.910 --> 00:14:34.650
Михаил Непряхин: и вы можете Там что-то получить Даже вернуть что-то Из этого метода Но оно никак Не затронет Вот То что Там было внутри

122
00:14:35.210 --> 00:14:37.360
Михаил Непряхин: Поэтому Грубо говоря

123
00:14:37.820 --> 00:14:40.850
Михаил Непряхин: какой более продвинутый способ работать с объектами

124
00:14:40.980 --> 00:14:47.770
Михаил Непряхин: а если вы понимаете что вы не будете ничего Менять то можете и не использовать указательный метод

125
00:14:48.220 --> 00:14:59.180
Михаил Непряхин: но есть другая еще особенность например, вот у вас есть один метод который вот он только на чтение вот тарит допустим вы только читаете а второй вот вы прям встретите да значения

126
00:14:59.500 --> 00:15:08.820
Михаил Непряхин: и получается, там где вы встретите значение ну вот вы здесь его допустим читаете шацманда, сделал вот так вот здесь вот мы его читаем здесь мы с этим да

127
00:15:08.980 --> 00:15:23.940
Михаил Непряхин: но здесь придется вам Использовать Звездочку для того чтобы действительно сделать вот Это изменение а здесь Раз Вычитаете Вы эту Звездочку Не Делаете Но и да е нам подчеркивают типа что

128
00:15:24.090 --> 00:15:29.820
Михаил Непряхин: вот рекомендуется если у вас Есть хоть один указательный метод

129
00:15:30.380 --> 00:15:33.490
Михаил Непряхин: сделать все методы указательными

130
00:15:33.760 --> 00:15:35.280
Михаил Непряхин: сделать семь, этот вот так вот

131
00:15:35.720 --> 00:15:43.680
Михаил Непряхин: и отту отсюда и берется засилие Вот Этими Вот указательными Или северами

132
00:15:43.780 --> 00:15:50.770
Михаил Непряхин: потому что когда вы по дефолту что-то Там делаете допустим хочу Реализовать этот интерфейс

133
00:15:52.080 --> 00:15:54.680
Михаил Непряхин: так Сейчас, вы Допустим у меня есть катастрофа

134
00:15:58.210 --> 00:16:03.420
Михаил Непряхин: вот и хочу я у нее заимплементить в этот интерфейс

135
00:16:07.540 --> 00:16:12.990
Михаил Непряхин: ну Нет смотрите здесь он По дефолту и едешь ко мне вставила ресивер

136
00:16:13.140 --> 00:16:19.920
Михаил Непряхин: такой неуказательный Раньше, Всегда, доставляла Указательного Северного чего-то поменяли но вот это конкретном же бренте

137
00:16:20.090 --> 00:16:26.510
Михаил Непряхин: короче говоря очень редкое явление когда вы имеете дело

138
00:16:26.650 --> 00:16:31.330
Михаил Непряхин: а вот с ресивером вот эта часть называется ли север потому что типа Она принимает

139
00:16:31.600 --> 00:16:32.280
Михаил Непряхин: Ммм

140
00:16:32.550 --> 00:16:34.080
Михаил Непряхин: ну как Бы

141
00:16:34.470 --> 00:16:40.080
Михаил Непряхин: работает с этим объектом ну не знаю принимать не принимает короче на север это называется

142
00:16:40.250 --> 00:16:46.020
Михаил Непряхин: вот ресивер просто По значению явления редкое но

143
00:16:46.340 --> 00:16:50.100
Михаил Непряхин: это довольно мощный сигнал как бы

144
00:16:50.270 --> 00:17:06.829
Михаил Непряхин: э это Дополнительная информация когда вы имеете сигнатуру такую допустим у вас там много методов и они все вы видите что они все Без указателя это значит Что вы можете работать с этими Методами безопасно

145
00:17:06.900 --> 00:17:13.210
Михаил Непряхин: эти методы не поменяют изначально ваш, объект то есть это как, бы дополнительная еще Информация для вас,

146
00:17:13.910 --> 00:17:16.089
Михаил Непряхин: дополнительная Информация в сигнатуре

147
00:17:18.359 --> 00:17:20.960
Михаил Непряхин: а вот здесь Вопросы,

148
00:17:21.119 --> 00:17:23.349
Михаил Непряхин: с этим понятно, есть Вопросы?

149
00:17:24.010 --> 00:17:26.210
Михаил Непряхин: Так то есть после т

150
00:17:26.359 --> 00:17:29.970
Михаил Непряхин: указатель на т перед передачей в метод

151
00:17:31.350 --> 00:17:35.780
Михаил Непряхин: гуф сделал копию структуры пот да

152
00:17:36.300 --> 00:17:42.040
Михаил Непряхин: он сделал копию структуру под т взял от него указатель и передал в аргумент

153
00:17:42.600 --> 00:17:48.320
Михаил Непряхин: так Сейчас смотрите как это Было как это Было

154
00:17:49.180 --> 00:17:50.940
Михаил Непряхин: взяли мы

155
00:17:51.600 --> 00:18:05.420
Михаил Непряхин: ну допустим Давайте исправм без указателя да вот Мы вот без указателя работы от назначения Мы Передаем функцию этот аргумент м а в аргументы, Мы Всегда, Передаем копии

156
00:18:06.330 --> 00:18:15.410
Михаил Непряхин: там конечно принимается нетерфейс Поэтому тут происходит некоторое дополнительное действие ну просто вы сразу понимаете вот вы видите такую ситуацию вы куда-то функцию передаете вы Передаете копию

157
00:18:15.620 --> 00:18:20.570
Михаил Непряхин: купи объекта если бы вы указатель вы Передаете копию указателя

158
00:18:20.670 --> 00:18:27.780
Михаил Непряхин: но Копия указателя в общем-то она и есть указатель купи указателя значит вы уже указываете на те данные Которые под. Указателем

159
00:18:28.260 --> 00:18:29.420
Михаил Непряхин: дальше

160
00:18:30.090 --> 00:18:33.280
Михаил Непряхин: вы аа ну грубо говоря вот здесь вот

161
00:18:33.480 --> 00:18:35.120
Михаил Непряхин: создали интерфейс

162
00:18:35.510 --> 00:18:39.530
Михаил Непряхин: и вы поместили вот этот ти

163
00:18:39.800 --> 00:18:40.980
Михаил Непряхин: копию ти

164
00:18:41.280 --> 00:18:43.200
Михаил Непряхин: вовнутрь интерфейса

165
00:18:44.520 --> 00:18:47.380
Михаил Непряхин: дальше здесь вы работаете с Интерфейсом

166
00:18:47.680 --> 00:18:52.210
Михаил Непряхин: Но у интерфейса под капотом копия

167
00:18:52.950 --> 00:18:59.140
Михаил Непряхин: то есть вот эта вот штука живет отдельно. Здесь У нас а Там в Интерфейсе Внутри копия

168
00:18:59.890 --> 00:19:04.920
Михаил Непряхин: дальше вы вызываете метод ну и вот от Этой копии вы вызываете вот такой вот метод

169
00:19:05.830 --> 00:19:09.380
Михаил Непряхин: и есть ли другая ситуация,

170
00:19:10.070 --> 00:19:13.300
Михаил Непряхин: есть ли у вас здесь указатель

171
00:19:14.010 --> 00:19:23.030
Михаил Непряхин: вы передали сюда копию указателя и там в интерфейсе, ну. Там Же в Интерфейсе Два поля это

172
00:19:24.330 --> 00:19:27.740
Михаил Непряхин: указатель на объект и указатель на

173
00:19:28.640 --> 00:19:31.240
Михаил Непряхин: нужно тип словно на виртуальной таблице медов

174
00:19:31.530 --> 00:19:39.980
Михаил Непряхин: и получается Что Там находится указатель на указатель когда вы Там получаете То есть ну

175
00:19:40.160 --> 00:19:44.800
Михаил Непряхин: сам постер подкопан копии указателя потом когда вы вызываете этот метод

176
00:19:45.530 --> 00:19:57.840
Михаил Непряхин: То оно ну в общем То вызывается вот от того объекта который он получает когда переходит По указателю То есть в Этом случае метод будет вызван от реального вот этого объекта который был здесь

177
00:19:58.050 --> 00:20:06.600
Михаил Непряхин: Поэтому если вы хотите, что-то менять То как минимум У вас должен быть указатель его здесь иначе вы у, него ничего Не поменяете

178
00:20:08.070 --> 00:20:11.000
Михаил Непряхин: и здесь дальше

179
00:20:11.360 --> 00:20:14.570
Михаил Непряхин: смотрите интересные два часа вопросик посмотрим

180
00:20:14.800 --> 00:20:17.460
Михаил Непряхин: Так вот это вот Понятно, Я объяснил михаил

181
00:20:18.830 --> 00:20:32.540
Михаил Непряхин: гул сделал копию структуру проте взял от Него указатель передал в аргумент да да да он сделал копию да все правильно то, есть Он реально вот когда у нас такая ситуация, Он взял от Него копию и

182
00:20:33.080 --> 00:20:40.550
Михаил Непряхин: и указатель взял на Эту копию и вот мы уже имеем дело с указателем на Копию

183
00:20:41.280 --> 00:20:42.850
Михаил Непряхин: та окно не для свайся

184
00:20:43.670 --> 00:20:48.620
Михаил Непряхин: Ну с асфальтом отдельная история да сразить так и Всегда, поскольку потом указателями

185
00:20:48.840 --> 00:20:57.970
Михаил Непряхин: не лучше ли Всегда возвращать новую структуру и присваивать ее в ти а не менять выходную по указателю ну вот как бы, это

186
00:20:58.120 --> 00:21:05.880
Михаил Непряхин: вот вот как бы да то, есть вы можете работать вот Таким образом

187
00:21:06.110 --> 00:21:13.490
Михаил Непряхин: просто вам надо Будет возвращать эту структуру и в нее присвоить ну есть Небольшая Особенность

188
00:21:14.460 --> 00:21:17.690
Михаил Непряхин: у нас интерфейс в обратную сторону Непрозрачный

189
00:21:17.820 --> 00:21:21.470
Михаил Непряхин: Мы не можем например, взять и сказать Что ви

190
00:21:21.630 --> 00:21:24.570
Михаил Непряхин: это вот

191
00:21:24.800 --> 00:21:27.320
Михаил Непряхин: вот Так вот Что Вий Это

192
00:21:31.610 --> 00:21:36.720
Михаил Непряхин: а с Указателями так Не можем со Значением Мы так можем сделать а с указателем так нельзя

193
00:21:38.270 --> 00:21:39.920
Михаил Непряхин: а и

194
00:21:45.510 --> 00:21:49.160
Михаил Непряхин: ты точно неправильно? Объяснил сделать-то вот это Мы можем

195
00:21:49.780 --> 00:22:01.590
Михаил Непряхин: но Мы поменяем локальную переменную вот Эту вот потому, что вот это вот это толстый указатель Мы берем его меняем но толку от этого вот здесь изменений не будет то есть

196
00:22:01.770 --> 00:22:03.750
Михаил Непряхин: м по сути

197
00:22:03.950 --> 00:22:06.570
Михаил Непряхин: в нашем распоряжении как бы

198
00:22:07.080 --> 00:22:19.480
Михаил Непряхин: м структура которую мы она не прозрачна для нас то есть мы не можем сквозь интерфейс добраться ну как бы и что. То сделать с типом,

199
00:22:19.950 --> 00:22:22.970
Михаил Непряхин: а на который указывает этот интерфейс

200
00:22:23.390 --> 00:22:26.010
Михаил Непряхин: то Есть вот смотрите Внутри интерфейса

201
00:22:26.170 --> 00:22:29.640
Михаил Непряхин: либо. Прям вэлью Копия

202
00:22:30.110 --> 00:22:31.790
Михаил Непряхин: либо. Указатель

203
00:22:32.340 --> 00:22:49.170
Михаил Непряхин: Но Мы с Ними ничего Не можем сделать То есть Там поменять Мы что-то Не можем Мы можем только У них Вызвать Методы и все это как Бы все Что Мы можем как взаимодействовать если, Мы так сделаем ничего Не поменяется то есть Мы вот эту перемену поменяем и все то есть как бы это бессмысленно

204
00:22:50.650 --> 00:22:51.700
Михаил Непряхин: Так

205
00:22:52.860 --> 00:22:55.140
Михаил Непряхин: Я прозвучу фанк ти

206
00:22:55.460 --> 00:22:57.670
Михаил Непряхин: на и

207
00:22:58.430 --> 00:23:00.920
Михаил Непряхин: да когда У нас здесь Указатель

208
00:23:01.480 --> 00:23:05.540
Михаил Непряхин: То мы и

209
00:23:07.830 --> 00:23:10.070
Михаил Непряхин: У нас здесь Указатель

210
00:23:10.270 --> 00:23:12.200
Михаил Непряхин: мы скопировали сюда указатель

211
00:23:12.360 --> 00:23:15.630
Михаил Непряхин: вентерфейсе Сейчас Находится указатель

212
00:23:16.790 --> 00:23:22.480
Михаил Непряхин: а дальше Мы берем и от этого указателя вызываем метод

213
00:23:24.080 --> 00:23:30.920
Михаил Непряхин: аа ну У нас уже указатель и Мы метод вызываем по указателю просто, вызовется указатель этого и все То есть здесь никакой проблемы Нет

214
00:23:32.440 --> 00:23:39.120
Михаил Непряхин: так кто из изменения станет сколково да да вот это я показываю изменение, останется Только в этом сколково и оно не выйдет за него

215
00:23:39.980 --> 00:23:41.060
Михаил Непряхин: у

216
00:23:41.350 --> 00:23:54.040
Михаил Непряхин: а теперь, смотрите почему ну как бы вот это вот понятно Что если, Мы хотим, что-то поменять чтобы Объект чуть Поменялось вот надо здесь чтобы был указатель иначе изменения Не будут приняты

217
00:23:54.720 --> 00:23:58.330
Михаил Непряхин: а есть еще такой кейс который Я Сразу показывал

218
00:23:59.020 --> 00:24:01.990
Михаил Непряхин: смотрите есть ли У нас здесь значение

219
00:24:02.730 --> 00:24:08.630
Михаил Непряхин: то Мы Не можем Не скомпелироваться. Э гошка не даст импелировать вот эту штуку

220
00:24:08.800 --> 00:24:12.180
Михаил Непряхин: потому что эта Бессмыслица

221
00:24:13.790 --> 00:24:21.380
Михаил Непряхин: смотрите что происходит значит мы берем создаем вэлью копируем его винтерфейс

222
00:24:21.520 --> 00:24:25.970
Михаил Непряхин: то есть Мы же на Трофейсе делаем копию вэлью

223
00:24:26.180 --> 00:24:28.800
Михаил Непряхин: то есть Там Внутри еще свой

224
00:24:29.170 --> 00:24:31.660
Михаил Непряхин: все уйти возникает свой собственный идти

225
00:24:32.470 --> 00:24:39.890
Михаил Непряхин: дальше Мы берем и говорим что от этого от Этой копии идти Вызови метод

226
00:24:40.440 --> 00:24:46.060
Михаил Непряхин: дальше кошка смотрит этот метод имеет ресивер

227
00:24:46.230 --> 00:24:47.560
Михаил Непряхин: э по указателю

228
00:24:47.660 --> 00:24:56.140
Михаил Непряхин: что это говорит гошке гошке Это говорит То что значит метод внутри может поменять наш. Объект

229
00:24:57.200 --> 00:25:07.220
Михаил Непряхин: но Если метод внутри может поменять наш. Объект какой он Объект поменяет он поменяет объект который Находится Внутри интерфейса

230
00:25:07.370 --> 00:25:16.720
Михаил Непряхин: но ведь, это бессмыслица ну и что что Мы возьмем и Внутри вот Этого вот

231
00:25:17.020 --> 00:25:19.190
Михаил Непряхин: метода поменяем

232
00:25:19.430 --> 00:25:20.500
Михаил Непряхин: примелад

233
00:25:20.870 --> 00:25:29.640
Михаил Непряхин: ведь. Никто Не увидит Эти изменения Эти изменения останутся Внутри Интерфейса а значит эта полная фигня Бессмыслица

234
00:25:29.940 --> 00:25:44.110
Михаил Непряхин: на Самом деле конечно никто Не мешает эээ ну как бы Технически такое можно было сделать но в гол решили запретить это на уровне синтаксиса потому что если вы Так делаете То как будто. Бы вы совершаете Ошибку

235
00:25:44.140 --> 00:25:54.440
Михаил Непряхин: Что вы работаете со значением павелю а Методы У вас указательные как бы Технически Нет никакой Проблемы взять

236
00:25:54.660 --> 00:25:57.820
Михаил Непряхин: от этого вэлью указатель и вот

237
00:25:58.150 --> 00:26:00.890
Михаил Непряхин: его сюда

238
00:26:01.100 --> 00:26:03.220
Михаил Непряхин: как бы в аргументе Подставить

239
00:26:03.530 --> 00:26:06.450
Михаил Непряхин: но изменения никто не увидит

240
00:26:06.460 --> 00:26:13.570
Михаил Непряхин: кроме внутренности интерфейса а к внутренности антрофейса доступа ни у Кого, нет эта вещь, в себе.

241
00:26:13.570 --> 00:26:28.190
Михаил Непряхин: И все что Мы можем делать интерфейсом это от него методы вызвать и все Мы еще больше ничего сделать не можем ну и Там поменять можно взять и

242
00:26:28.350 --> 00:26:31.600
Михаил Непряхин: и Раз это бессмыслица то это запретили на уровне языка.

243
00:26:32.180 --> 00:26:33.160
Konstantin: Можно объяснить.

244
00:26:33.160 --> 00:26:33.720
Михаил Непряхин: Да Давайте.

245
00:26:33.720 --> 00:26:47.860
Konstantin: А вот на строчке четырнадцать у, нас создается и.

246
00:26:48.140 --> 00:26:49.720
Михаил Непряхин: Можно, а вот это можно.

247
00:26:49.720 --> 00:26:51.580
Konstantin: Дагушка не Запретит такое да.

248
00:26:51.580 --> 00:26:57.620
Михаил Непряхин: А вот это можно короче да вот это как бы следующее чокнуло сказать

249
00:26:57.920 --> 00:27:06.750
Михаил Непряхин: смотрите А вот А вот так можем и вот Поэтому у многих, возникает вопрос ватафак почему же гошка вот Так вот разрешает делать.

250
00:27:07.270 --> 00:27:09.940
Михаил Непряхин: А в Интерфейсе то же самое Нет

251
00:27:10.100 --> 00:27:23.100
Михаил Непряхин: ведь, Это Тоже бессмыслица если Мы Так Сделаем то Внутри Это Тоже Не поменяется потому. Что Мы здесь Работаем с Копией

252
00:27:24.070 --> 00:27:28.400
Михаил Непряхин: Давайте проверим вот Мы здесь меняем в элью

253
00:27:36.000 --> 00:27:52.460
Михаил Непряхин: а ну Нет мы же здесь ни в какую функцию не передаем да здесь оно поменяется потому что мы и

254
00:27:54.290 --> 00:28:01.500
Михаил Непряхин: здесь бы Не интерфис принималось Не принимался а типа принимался бы

255
00:28:01.570 --> 00:28:07.610
Михаил Непряхин: вот видите так-то Мы можем сделать То есть потумели с энтрофей сонат вот физический пример мы Можем сделать

256
00:28:07.610 --> 00:28:23.560
Михаил Непряхин: Но бессмыслица потому что мы здесь копию передадим Копия здесь Поменяется а вот эта Копия Не изменится и у нас тут витя по его то он остается такой же то есть это тоже бессмыслица но Этого уже не запрещают делать а бессмыслицы тоже

257
00:28:23.780 --> 00:28:33.170
Михаил Непряхин: вот а если здесь Же просто вызываете Метод ну как бы да вы работаете не с копией вы работаете с оригиналом от этого оригинала вы, Берете указатель

258
00:28:33.370 --> 00:28:40.140
Михаил Непряхин: и на этом указателя вызывайте влю и Оно меняется вот здесь и Поэтому Мы

259
00:28:41.860 --> 00:28:43.890
Михаил Непряхин: Мы вот Это вот изменение Видим

260
00:28:44.840 --> 00:28:45.660
Михаил Непряхин: вот

261
00:28:48.050 --> 00:28:50.320
Михаил Непряхин: да давайте. Еще еще Вопросы?

262
00:28:50.740 --> 00:29:08.010
David R: По интерфейсам есть вопросик Сейчас возник в интерфейсе мы можем только методы запихнуть или в интерфейсе можно еще и указать Что У объекта могут ну? Что У объектов. Должны Быть какие-то Там Не знаю перемены? Константы Там Еще чего-то.

263
00:29:08.010 --> 00:29:08.550
Михаил Непряхин: Нечу.

264
00:29:08.550 --> 00:29:09.790
David R: То только Санкции.

265
00:29:09.790 --> 00:29:12.320
Михаил Непряхин: Только Функция ну? Только метра Только медленно.

266
00:29:12.320 --> 00:29:13.030
David R: Окей.

267
00:29:13.030 --> 00:29:16.290
Михаил Непряхин: То Есть вот он так Тайпинг, вот именно на методах

268
00:29:16.390 --> 00:29:24.690
Михаил Непряхин: что. Ну можем приват не сделать метод если интерфейс использует такого внутриредного пакета, либо публичный да и все больше Ничем

269
00:29:25.690 --> 00:29:30.800
Михаил Непряхин: так то Есть Изменение останется скупо так Еще Вопросы, давайте все ли понятно Здесь.

270
00:29:31.240 --> 00:29:34.650
Илиас Эззахид: А есть вопрос По пантерасевр.

271
00:29:34.870 --> 00:29:43.310
Илиас Эззахид: Касаемо архитектуры там если у нас методы Это Извиняюсь. Сервисы Репозитория и в целом

272
00:29:44.270 --> 00:29:50.630
Илиас Эззахид: сингл. Тоны Все должно быть пойнтера Север никаких Валеру Север

273
00:29:51.250 --> 00:29:54.350
Илиас Эззахид: Метода сервиса при позитории.

274
00:29:55.680 --> 00:30:05.320
Михаил Непряхин: Обычно да несмотря на То Что Там, Не Используются изменения какие-то То Есть обычно Мы

275
00:30:05.450 --> 00:30:15.270
Михаил Непряхин: Не Меняем ничего То Есть если работаем с базой данных Там с чем угодно с какими-то инфраструктурными этими вещами а

276
00:30:15.390 --> 00:30:21.240
Михаил Непряхин: Там обычно Всегда, Мы видим север по указателю и объект используется по указателю

277
00:30:21.390 --> 00:30:24.560
Михаил Непряхин: аа здесь еще какая причина

278
00:30:24.870 --> 00:30:28.750
Михаил Непряхин: мы просто как бы, подчеркиваем

279
00:30:28.970 --> 00:30:31.180
Михаил Непряхин: что объект у нас Один

280
00:30:31.470 --> 00:30:38.760
Михаил Непряхин: что вот мы его изначально создали например Подключение к кафке Подключение к погре

281
00:30:38.970 --> 00:30:46.960
Михаил Непряхин: и дальше мы работаем с Этим указателем А Раз, У нас изначально уже был указатель

282
00:30:47.150 --> 00:30:54.000
Михаил Непряхин: то Мы и Работаем с севером указательным. Как бы

283
00:30:54.120 --> 00:31:09.540
Михаил Непряхин: когда Мы видим вот Это Мы Понимаем ага Там выше объект был Создан по указателю Поэтому как бы Мы и здесь это подчеркиваем Что Мы и его используем тот самый Один Объект который был создан в одном экземпляре

284
00:31:09.660 --> 00:31:13.910
Михаил Непряхин: а Не его Копию потому Что, довольно Странно

285
00:31:14.020 --> 00:31:21.970
Михаил Непряхин: Передавать Копию соединения типа понятно, Что, работать Будет Там Это все равно в конечном итоге. Указатель

286
00:31:22.620 --> 00:31:38.380
Михаил Непряхин: Но как-то Семантически когда Мы это подчеркиваем Мы говорим Мы работаем с Тем Самым одним Объектом который где-то Там давно создали и Вот Мы просто его переиспользуем это еще такой Знак когда мы работаем по указателю

287
00:31:39.430 --> 00:31:41.630
Михаил Непряхин: так Давайте еще есть Вопросики здесь.

288
00:31:43.310 --> 00:31:46.110
Илиас Эззахид: Еще Один Вопрос спасибо

289
00:31:46.290 --> 00:31:57.680
Илиас Эззахид: и насколько. Ну Я Там почитал что Если Там они Там хранятся. Слишком большие. Объекты что лучше валера север насколько большие. Тогда.

290
00:31:58.240 --> 00:32:06.410
Михаил Непряхин: Но больше не помню сколько Именно по-моему не габайт по-моему если больше Не габайт а то там уже

291
00:32:06.520 --> 00:32:12.820
Михаил Непряхин: Прям важно чтобы было по интернету дело, в том что смотрите дилемма

292
00:32:13.060 --> 00:32:22.410
Михаил Непряхин: вот когда у вас объект находится на стекке, большой объект то его дорого копировать но от функции, вклада, передачи происходит копия

293
00:32:23.220 --> 00:32:31.210
Михаил Непряхин: но зато не надо Нагружать горбочкой лектор да вы тратите вот вот Это вот как бы время на копирование

294
00:32:31.610 --> 00:32:44.260
Михаил Непряхин: а оно все равно быстрее чем Э создавать объект куча потом его огорочка электробот собирать это наклони расходы большие Поэтому вот

295
00:32:44.480 --> 00:32:55.250
Михаил Непряхин: стоит об этом париться только если вы Работаете с прямо с Силами Мы с максимом не очень Редко Работаем Мы обычно засмеялись на работу почти Всегда, но вдруг вы работаете с огромными, массивами

296
00:32:55.440 --> 00:33:05.430
Михаил Непряхин: и вот их если они Прям действительно большие ну стоит указать по указателю Передавать во всех остальных случаях какая бы там ни была большая структура,

297
00:33:06.200 --> 00:33:18.420
Михаил Непряхин: ну как, бы с точки зрения перформанса она Всегда, была Программа, будет. Всегда, работать. Быстрее если вы будете ее копировать то есть не по указателям будет Передавать

298
00:33:18.470 --> 00:33:23.170
Михаил Непряхин: вот а по указателю или не по указателю вопрос уже философский

299
00:33:23.190 --> 00:33:44.320
Михаил Непряхин: типа хотите, ли вы ее мутировать из разных мест Тогда По указателю какие варианты то есть нам нужно указать передачу Не сможете Или у вас Философия такая Что вы не хотите, чтобы ее кто-то изменял вы хотите, чтобы все скопие ее работали чисто Технически по перформансу Это даже будут быстрее

300
00:33:44.630 --> 00:33:57.790
Михаил Непряхин: Поэтому вот это вот вопрос что по указателю во что-нибудь по указателю он ну все равно как о нем надо задумываться о нем надо знать потому. Что гробошники Не разбираясь лепят везде указатели

301
00:33:58.150 --> 00:34:15.110
Михаил Непряхин: и Но если вы чуть-чуть понимаете философию зачем нужен и

302
00:34:15.110 --> 00:34:19.370
Михаил Непряхин: а Работа это важно это просто везде указатель везде указательнее на Севера

303
00:34:19.960 --> 00:34:21.710
Михаил Непряхин: так еще вопросики есть

304
00:34:26.389 --> 00:34:28.159
Михаил Непряхин: окей

305
00:34:31.280 --> 00:34:36.929
Михаил Непряхин: так ладно короче У нас тема тема сегодня Мы разбираемся с конкурентностью

306
00:34:37.650 --> 00:34:40.290
Михаил Непряхин: гуртины Каналы вот это все

307
00:34:42.940 --> 00:34:48.800
Михаил Непряхин: так ну в общем-то киллер фичишки пошли м

308
00:34:49.780 --> 00:34:51.409
Михаил Непряхин: гуртины

309
00:34:54.270 --> 00:35:08.620
Михаил Непряхин: ну вот эти против штук я уже говорил это возможность Задавать Пи. То Есть У нас вот Там и

310
00:35:08.740 --> 00:35:20.490
Михаил Непряхин: а процессор. Или процесс Линия Процесса который мапится Один к Одному с машиной и как бы Единственное его отличие что Он

311
00:35:20.830 --> 00:35:25.660
Михаил Непряхин: Не Жестко Прибит Гвоздями к этому потоку а Он может с Него Быть снят

312
00:35:25.930 --> 00:35:30.510
Михаил Непряхин: например если У нас какая-то синхронная операция, Мы пишем на диск читаем с диска

313
00:35:30.560 --> 00:35:47.450
Михаил Непряхин: То Мы просто мируем снимаем процесс Ставим его Там Ждем Пока нам. Персонально просигналит Что. Все значит на язык. Записали мы Опять, ее потом ставим на м на поток Физически и он уже будет работать дальше вот вот это вот Количество Пи Мы Можем указать

314
00:35:47.640 --> 00:35:56.460
Михаил Непряхин: Если, Мы говорим. Что их четыре. То значит у нас параллельность в программе может быть четыре. Если Мы говорим что Один параллельности в программе никакой. Нет

315
00:35:56.670 --> 00:36:16.640
Михаил Непряхин: значит Гонки данных Не может возникнуть значит Мы просто работаем Всегда в одном Потоке это Не значит что Пи Будет Всегда один пит и там Будет много под капотом они там будут в зависимости отгошки как надо ставить и Сниматься но вот Одновременно пи может работать Только один то Есть, Опция, самая Главная которую надо знать

316
00:36:17.000 --> 00:36:23.920
Михаил Непряхин: ну? Гоу-шэт просто? Я уже в прошлый, Раз, показывал по-моему как-то что мы можем оэйд это по Сути аналоковые-то можно сказать

317
00:36:24.420 --> 00:36:27.330
Михаил Непряхин: хватит адай поработать в Другой воротине

318
00:36:28.410 --> 00:36:47.140
Михаил Непряхин: и и

319
00:36:47.140 --> 00:36:49.920
Михаил Непряхин: а запустится Она ну. Через какое-то Время

320
00:36:49.920 --> 00:36:56.000
Михаил Непряхин: а Через сколько-то Микросекунд Она запустится Но Не совсем сразу Точнее вообще Не сразу

321
00:36:56.100 --> 00:37:04.670
Михаил Непряхин: то есть надо немножечко подождать Поэтому обычно какой-то Слип нужен чтобы тут ну Это, в примерах Там, обычно на другие механизмы Сейчас Мы посмотрим

322
00:37:05.100 --> 00:37:12.280
Михаил Непряхин: ну просто анонимная функция запускается Таким образом фанк в конце круглой скобочки и что-то Там внутри

323
00:37:12.430 --> 00:37:25.180
Михаил Непряхин: и Это, вот Это, вот То Же самое что вот Это, вот То Есть Мы можем сперва Присвоить переменную просто. Анонимную Функцию ну А потом ее Вызвать с помощью гол ну обычно Делают, его Так потому. Что запись короче

324
00:37:26.330 --> 00:37:29.570
Михаил Непряхин: А какое значение обычно указывает гумок плак Или Отстает Молчание

325
00:37:29.700 --> 00:37:37.490
Михаил Непряхин: А значит. В последней версии гоу наконец-то научилась гошка правильно выставлять по ресурсам в губернетисе

326
00:37:38.040 --> 00:37:51.710
Михаил Непряхин: ааа раньше была проблема Поэтому использовала сторон Сторонняя библиотека отубера которая тоже выставляла во сколько ядер в губернаторы в манифесте Прописано столько оно и ставилось

327
00:37:51.980 --> 00:38:04.720
Михаил Непряхин: ставится вот а вообще дефолтное Поведение, до версии Один двадцать пять по-моему ну? Тут Один Раз, пять это только только высшего Сейчас Один двадцать четыре актуальное вот по-моему в Один двадцать четыре дефолтное значение

328
00:38:04.720 --> 00:38:17.660
Михаил Непряхин: это просто сколько. Ядер есть в персонке и

329
00:38:18.150 --> 00:38:28.270
Михаил Непряхин: что в губернаторы, все губительно Поэтому в губернаторы, сидит специальная вот либо которая ставит правильное вот это значение по количеству, ресурсов ну обычно один или Два

330
00:38:28.690 --> 00:38:36.110
Михаил Непряхин: дефолт не имеет значения либо подключается библиотека отбера и она тоже сама делает один или Два

331
00:38:38.120 --> 00:38:44.070
Михаил Непряхин: гонка данных значит как она возникает ну я уже рассказываю что гонка данных

332
00:38:44.340 --> 00:38:47.470
Михаил Непряхин: но ведь еще Раз Появились трево очень важная Штука

333
00:38:47.940 --> 00:38:51.150
Михаил Непряхин: не вообще для себя принимать и вопросы, есть на совете

334
00:38:52.490 --> 00:38:58.280
Михаил Непряхин: значит У нас Программа, Запускается Внутри процесса операционной системы

335
00:39:00.720 --> 00:39:16.260
Михаил Непряхин: эта память онарисовал виртуальная память она там как-то мапится на физическую память Да ну. Это Уже там Занимается Лимонов с этим значит У нас есть виртуальная Память процесс Он вообще как Бы Считает Что Он в персонке Один и он тут, главный и все ресурсы его

336
00:39:16.260 --> 00:39:21.030
Михаил Непряхин: ну просто он не знает, Что это сверху линкс решает сколько он будет работать и

337
00:39:21.050 --> 00:39:24.660
Михаил Непряхин: когда она его убьет вот и процесс считает Что вот он Один,

338
00:39:24.710 --> 00:39:31.820
Михаил Непряхин: вся, память его Поэтому он и Распоряжается так что вся, в моем распоряжении значит

339
00:39:32.240 --> 00:39:40.740
Михаил Непряхин: а внутри, процесса может Быть Запущено много трядов вот если Мы выставили Там гомакс-прокс два вот У нас условно Одновременно может два ряда работать

340
00:39:41.110 --> 00:39:54.910
Михаил Непряхин: а память и стек и куча она тут в гошке как бы нельзя сказать в каком месте стек потому что он очень похож на кучу просто где-то вот выделилась для грутинки Место, и вот Она работает

341
00:39:55.170 --> 00:39:58.860
Михаил Непряхин: и значит вот есть какая-то какой-то счетчик, каунтер

342
00:40:00.210 --> 00:40:11.190
Михаил Непряхин: и Мы его Хотим, инкриминировать Да просто Хотим, инкриминировать но Мы Хотим, это конкурентно Делать, ведь у нас в два ряда у нас все запускается в двух потоках

343
00:40:11.210 --> 00:40:21.460
Михаил Непряхин: и у нас этот поток может счетчик инкриминировать и этот поток может чуть-чуть комментировать ну может возникнуть гонка данных потому что этот поток Пришел и

344
00:40:21.740 --> 00:40:35.120
Михаил Непряхин: Операция. Инклемен состоит, из двух частей То Есть Мы сперва Делаем гет а потом Делаем сет словно То Есть Мы сперва Читаем этот поток прочитал значение Счетчика ноль

345
00:40:35.150 --> 00:40:43.530
Михаил Непряхин: и они оба заинкменители, этот один сказал в этот день и сказал в итоге Щечек в значении один а на самом деле должен быть два потому что потока два

346
00:40:43.730 --> 00:40:47.770
Михаил Непряхин: вот это вот явление называется гонка данных когда мы

347
00:40:47.970 --> 00:41:00.400
Михаил Непряхин: а гонка данных может возникнуть только при записи Если бы эти потоки читали то гонки данные бы не возникло или допустим Один, поток читал Один, писал тоже гонки данных бы не возникло потому что ну.

348
00:41:00.710 --> 00:41:08.690
Михаил Непряхин: А только один поток пишет гонки данных Нет но конка данных возникает когда несколько потоков пишут в одну, Область. Памяти

349
00:41:08.930 --> 00:41:10.650
Михаил Непряхин: и вот нас тут такой пример

350
00:41:11.580 --> 00:41:13.310
Михаил Непряхин: значит

351
00:41:14.120 --> 00:41:15.920
Михаил Непряхин: Не будем так понять

352
00:41:19.370 --> 00:41:22.340
Михаил Непряхин: есть каунтер есть Щечек он У наснтовый

353
00:41:22.470 --> 00:41:25.930
Михаил Непряхин: Мы с Циклифор делаем десять тысяч Итераций

354
00:41:26.130 --> 00:41:30.110
Михаил Непряхин: и десять тысяч запусков, горотин

355
00:41:30.290 --> 00:41:38.950
Михаил Непряхин: ну да кстати где бы вы еще так вот вы процентки взяли бы на каком еще языке вы можете взять и запустить десять тысяч потоков на м ни в каком а здесь можете

356
00:41:39.840 --> 00:41:46.580
Михаил Непряхин: и значит каждый каждая грутинка внутри Она Инкриминирует, вот этот самый счетчик,

357
00:41:47.020 --> 00:41:58.130
Михаил Непряхин: потом мы спим секунду исключительно для того чтобы вот Эти, все гортинки успели запуститься потому, что если мы не будем спать они вообще не успеют запуститься и мы скорее всего вообще ничего не увидим

358
00:41:58.310 --> 00:42:02.230
Михаил Непряхин: ну тут десять тысяч. Конечно Раз, что-то увидим но Вообще По-хорошему

359
00:42:02.540 --> 00:42:07.070
Михаил Непряхин: и Если Здесь будут новые Операции Мы просто Из программы. Выйдем и Даже ничего Не успеем

360
00:42:07.260 --> 00:42:11.030
Михаил Непряхин: Допустим Если Будет Десятьтераций и Мы Не будем Спать

361
00:42:11.270 --> 00:42:15.340
Михаил Непряхин: с провером Успеет ли Еще хоть что-то Отработать но ничего Не успевает Работать

362
00:42:15.720 --> 00:42:27.990
Михаил Непряхин: О четыре и иногда Даже У Меня что-то успевает запускаться Но очень по-хорошему как, бы Тут надо что-то как-то ждать, пока там эти все бутины отработают а как, ждать, вот Сейчас мы и дальше Посмотрим

363
00:42:28.380 --> 00:42:29.590
Михаил Непряхин: значит смотрите

364
00:42:30.340 --> 00:42:41.700
Михаил Непряхин: делайте ваши ставки прогноз значит что выведет эта программа сколько мы в итоге увидим значение счетчика если запустим Десять тысяч грутин

365
00:42:43.620 --> 00:42:45.070
Михаил Непряхин: и подождем Секунду

366
00:42:46.310 --> 00:42:47.230
Михаил Непряхин: мало

367
00:42:48.660 --> 00:42:54.540
Михаил Непряхин: чуть меньше тысячи до Пяти, тысяч чуть меньше десяти непредсказуем меньше Девяти тысяч

368
00:42:55.900 --> 00:43:01.580
Михаил Непряхин: девять Пятьсот ну короче да на самом деле чуть меньше чем десять, тысяч,

369
00:43:01.980 --> 00:43:03.370
Михаил Непряхин: давайте проверим

370
00:43:06.030 --> 00:43:08.370
Михаил Непряхин: а вот ну вот девять пятьсот мы вам близко. Да

371
00:43:09.550 --> 00:43:18.140
Михаил Непряхин: то есть смотрите в случае со счетчиком который Хотят инкриминировать десять тысяч. Буртин конкурент

372
00:43:18.380 --> 00:43:34.280
Михаил Непряхин: Мы и

373
00:43:34.470 --> 00:43:40.200
Михаил Непряхин: вот ну Там от Запад к запуску тут разные цифры будут ну вот девять девятьсот сорок да

374
00:43:40.710 --> 00:43:42.860
Михаил Непряхин: вот значит

375
00:43:43.370 --> 00:43:46.790
Михаил Непряхин: как думаете, можем ли Мы запустить десять Миллионов грутин

376
00:43:47.980 --> 00:43:50.060
Михаил Непряхин: про Ваши ставки получится, Или Нет

377
00:43:54.340 --> 00:43:58.700
Михаил Непряхин: да можем опять, же только в Голову.

378
00:43:58.820 --> 00:44:10.320
Михаил Непряхин: Так легко и просто взяли и запустили Десять миллионов грузин ну потеряли здесь на литерации, сто тысяч. На счетчики

379
00:44:10.840 --> 00:44:24.910
Михаил Непряхин: вот и

380
00:44:25.010 --> 00:44:32.260
Михаил Непряхин: в Прямом эфире ну что вот сервер например, на каждый из опрос поднимает грутину и не парится и спокойно Держит рпц и хорошее

381
00:44:33.270 --> 00:44:34.010
Михаил Непряхин: да и

382
00:44:34.370 --> 00:44:43.170
Михаил Непряхин: так значит мы Хотим, это дело пофиксить мы Хотим, чтобы Наш счетчик ага да Можно Еще проверить да значит если смотреть Команду,

383
00:44:43.540 --> 00:44:46.830
Михаил Непряхин: у гоу есть специальный флаг рейс

384
00:44:47.430 --> 00:44:53.950
Михаил Непряхин: его можно в последствиях добавлять и даже просто запустить программу и посмотреть

385
00:44:54.110 --> 00:44:56.490
Михаил Непряхин: есть у нас гонка данных или Нет

386
00:45:02.080 --> 00:45:03.870
Михаил Непряхин: значит Запускаем

387
00:45:04.450 --> 00:45:17.480
Михаил Непряхин: и Видим да видя как Бы здесь лок он прямо, вот когда фиксирует какую То Гонку данных он Отговорит ворнинг, э какие грутины столкнулись с проблемами от пятнадцатой группы на десятая грутина

388
00:45:18.040 --> 00:45:23.180
Михаил Непряхин: а в каком месте и

389
00:45:23.700 --> 00:45:40.160
Михаил Непряхин: а тут восемнадцать -е девятнадцать -е да а это грутина на восемнадцатой строке конкретно вот Что к Этому адресу к этой ячейке памяти Обратились пятнадцатая грутина десятая грутина и У них Возникла Гонка данных

390
00:45:40.200 --> 00:45:58.380
Михаил Непряхин: да и

391
00:45:58.600 --> 00:46:12.360
Михаил Непряхин: короче возможность отловить гонки данных. Есть ну Не Всегда, Но вот обычно тесты Всегда, Запускаются с флагом Рельсы для того чтобы мало ли вдруг отворить какую то, какую то, Гонку данных ну вот У Меня, ни разу Такого Не Было на самом деле ни разу не сработал

392
00:46:14.050 --> 00:46:31.850
Михаил Непряхин: ааа Интересно как подкупано работать рай Всегда ли он находит все гонки данных Или есть ложно отрицательно очень легко То просто вот здесь он счетчик и слава богу что-то видит нужно нужно очень большое количество литераций чтобы он что-то Поймал сами понимаете это должно Так звезды совпасть

393
00:46:31.850 --> 00:46:38.240
Михаил Непряхин: сойтись чтобы вот он зафиксировал вот мы Одновременно обратились то есть это вообще Не Панацея

394
00:46:38.240 --> 00:46:48.220
Михаил Непряхин: то лучше просто писать программы так чтобы вычитать У Код и понять Что Физически точно не может быть то есть это все равно на Плечи программистов ложится,

395
00:46:48.860 --> 00:46:50.440
Михаил Непряхин: так хм

396
00:46:50.580 --> 00:47:07.820
Михаил Непряхин: ну как, порывывать бафриманки Ну никак Ну только запускать и смотреть Что У вас Не работает Или Кот читать и понимать Что вот точно гонки данных быть не может а вот здесь она может быть и надо бы попристальнее вот еще почитать посмотреть вдруг, она есть и как бы вы делаете так чтобы ну просто его точно не было

397
00:47:08.580 --> 00:47:13.170
Михаил Непряхин: так давайте за перерывчик сделаем перерыв сделаем и продолжим

398
00:50:15.530 --> 00:50:16.280
Михаил Непряхин: какие

399
00:50:21.010 --> 00:50:24.660
Михаил Непряхин: так возвращаемся Вопросы, вопросики не кидали да

400
00:50:24.930 --> 00:50:34.540
Михаил Непряхин: так есть ли Какое то количество грутин Которое Снизит эффективность программы или Сильного контекста зависит тот же пример с миллионами грутинным счетчики по идее в Одном потоке сделать их в темне

401
00:50:35.530 --> 00:50:37.330
Михаил Непряхин: ну посмотрите

402
00:50:37.880 --> 00:50:39.370
Михаил Непряхин: стандартный Сервер

403
00:50:39.610 --> 00:50:42.220
Михаил Непряхин: на каждый поток поднимает горкину

404
00:50:43.230 --> 00:50:44.600
Михаил Непряхин: и отлично Живет

405
00:50:44.970 --> 00:50:55.920
Михаил Непряхин: Но чуть быстрее будет если Мы Будем не поднимать каждый Раз гру тину на каждый запрос а Иметь, пул гору тим и переиспользовать их

406
00:50:56.120 --> 00:50:59.170
Михаил Непряхин: вот в фастх это тп так сделано

407
00:50:59.530 --> 00:51:09.120
Михаил Непряхин: то есть естественно пул, Всегда будет работать быстрее но не то чтобы насильно, намного ну максимум в два раза может быть лучше

408
00:51:09.330 --> 00:51:13.350
Михаил Непряхин: типа нам Не семьдесят рпц Будет сто сорок Корпораций будете Держать

409
00:51:13.790 --> 00:51:28.340
Михаил Непряхин: даже Нет Это Не Только От пола Еще кучу оптимизации короче наверное Не в два раза все-таки может процентов, на тридцать Это будет быстрее переиспользовать грутину чем создавать каждый Раз, новую понятно что на создание гурутины есть небольшого верха,

410
00:51:28.600 --> 00:51:31.010
Михаил Непряхин: если Можно переиспользовать то лучше воспользоваться

411
00:51:31.640 --> 00:51:46.940
Михаил Непряхин: если У нас есть мютаксы то хоть вообще Не в количестве грутин Дела потому что если у нас есть узкое Место, параллельность Не даст вам выигрыша Поэтому здесь тоже Не имеет. Смысла их очень много проводить

412
00:51:46.970 --> 00:52:06.600
Михаил Непряхин: и и

413
00:52:06.930 --> 00:52:07.680
Михаил Непряхин: а

414
00:52:07.720 --> 00:52:25.090
Михаил Непряхин: и эффективности это может чуть-чуть менее эффективно чем в рокер-пуле например, это сделать Поэтому многие просто и

415
00:52:25.130 --> 00:52:33.200
Михаил Непряхин: Что вот у нас Есть четыре Потока Сколько грутин может Одновременно работать четыре типа Зачем нам. Вводить Эти десятки тысяч грутин

416
00:52:33.200 --> 00:52:48.010
Михаил Непряхин: если Одновременно может работать только четыре так нету Смысла Поэтому вы просто поднимаете воркер пул. Из четырехгуртин а туда уже Заданиями Через каналы посылаете данные и эти четыре Рутины

417
00:52:48.010 --> 00:53:05.900
Михаил Непряхин: они просто Постоянно Работают они Не Переключаются Между Собой потому. Что на переключении грузин тоже есть. И

418
00:53:05.930 --> 00:53:07.370
Михаил Непряхин: но Здесь то Же самое

419
00:53:07.430 --> 00:53:08.960
Михаил Непряхин: потому. Что когда Мы

420
00:53:09.190 --> 00:53:22.180
Михаил Непряхин: Одну грурутину Снимаем. А другую Ставим То ведь все равно указатель То на стек Мы все равно Меняем. Регистриры все равно Мы регистр То Ммм Перезагружаем и Это конечно Не Контекст Свич

421
00:53:22.220 --> 00:53:33.480
Михаил Непряхин: но Не бесплатно То есть Сколько То Это Времени Занимает Сколько То Так То процессором и Мы теряем Поэтому как бы дефолт можете особо Не париться об этом

422
00:53:33.530 --> 00:53:46.900
Михаил Непряхин: но важно понимать что если вы хотите, эффективности то конечно рутины нужно просто Переиспользовать просто Создавать и

423
00:53:48.450 --> 00:53:51.830
Михаил Непряхин: так еще чуть-чуть посылки перездеться в Картинах

424
00:53:52.150 --> 00:54:00.110
Михаил Непряхин: вот здесь вот указатель да здесь указатель почему указатель потому Что это анонимная функция

425
00:54:00.280 --> 00:54:14.470
Михаил Непряхин: Помните я вам рассказывал Что, здесь просто сделан такой сахар Что, Мы берем из скоупа у нас есть счетчик сколково это получается что это замыкание ну просто, оно горутинное но это замыкание

426
00:54:14.890 --> 00:54:22.620
Михаил Непряхин: и а замыкание как у нас захватывают перемены по указателю то есть вот здесь, в неявном виде берется указатель вот сюда

427
00:54:25.010 --> 00:54:36.190
Михаил Непряхин: в и

428
00:54:36.240 --> 00:54:51.730
Михаил Непряхин: а и

429
00:54:52.140 --> 00:55:16.080
Михаил Непряхин: это и

430
00:55:16.280 --> 00:55:24.980
Михаил Непряхин: но протокол постоянно меняется и Пусть уж лучше он там будет меняться людьми которые за это ответственны

431
00:55:25.150 --> 00:55:31.430
Михаил Непряхин: а чем одним Человеком который ну пусть не одним Там есть контрибьютеры в а когда-то такое но

432
00:55:31.600 --> 00:55:46.210
Михаил Непряхин: и не рекомендую использовать как бы он на уровне раста по перформансу то есть фарс и поэта очень быстро, сержа но там есть компромиссы и

433
00:55:46.300 --> 00:55:52.540
Михаил Непряхин: хочется. Работать со стрингами и хочется. Как-то чтобы все проще было без всяких заморочек а Фасад сб он

434
00:55:52.880 --> 00:56:05.450
Михаил Непряхин: обязывает как Бы он навязывает заморачиваться про перформанс а это почти вообще Никогда даже на Хаймоводе можете просто. Обычный сервер бать ну поднимете Два Инстанционе, один ничего Страшного Там по ресурсам вы не сильно проиграете

435
00:56:05.770 --> 00:56:09.550
Михаил Непряхин: а воркер пул, ну да вонтер буду вы будете в любом случае использовать

436
00:56:09.700 --> 00:56:13.660
Михаил Непряхин: аа и здесь смысл с Тем же орел.

437
00:56:14.110 --> 00:56:21.990
Михаил Непряхин: Стояло сложнее в смысле если эта сеть То это, и Понятно оно и так, Там все Блестяще звучено если это, с

438
00:56:22.530 --> 00:56:23.780
Михаил Непряхин: метеиме

439
00:56:24.000 --> 00:56:37.180
Михаил Непряхин: записи на диск и для чтения с диска то там мы уже Упираемся в ограничение операционной системы то есть эта операция, синхронная и там как бы особый Выигрыш От того что у нас язык

440
00:56:37.990 --> 00:56:45.840
Михаил Непряхин: ну с Оптимизацией на Айову Мы Не очень получаем Но если. Речь просеть то да конечно в сети Мы Всегда,

441
00:56:47.040 --> 00:56:50.150
Михаил Непряхин: используем грузины и получаем оттуда выгоды

442
00:56:50.840 --> 00:56:55.780
Михаил Непряхин: короче смотрите вопрос Какой ээ вот У нас гонка данных Возникла дам счетчика

443
00:56:56.340 --> 00:56:59.330
Михаил Непряхин: а можем ли мы как то в лоб пофиксить не меняя код

444
00:57:01.410 --> 00:57:02.770
Михаил Непряхин: может быть

445
00:57:03.320 --> 00:57:07.910
Михаил Непряхин: Можно как-то поиграться вот с гумакпроксом например, выставить единицу

446
00:57:08.630 --> 00:57:11.730
Михаил Непряхин: будет ли в этом случае гонка данных вопросов,

447
00:57:12.980 --> 00:57:14.150
Михаил Непряхин: как вы думаете,

448
00:57:15.560 --> 00:57:17.010
Михаил Непряхин: поможет, это не поможет,

449
00:57:17.670 --> 00:57:18.840
Михаил Непряхин: не будет

450
00:57:20.920 --> 00:57:30.080
Михаил Непряхин: давайте прямо, подумайте прямо, это такой хороший вопрос вот Если, мы Сейчас выставим единицу Что это значит Что параллельности У нас Не будет

451
00:57:30.240 --> 00:57:33.440
Михаил Непряхин: мы говорим Что Одновременно может работать только одна, рутина

452
00:57:33.950 --> 00:57:37.200
Михаил Непряхин: а возникнет Ли гонка данной в этом случае

453
00:57:39.450 --> 00:57:55.890
Михаил Непряхин: Нет до Сих. Пор Не останется но Одновременно Будет работать на Груди на процессе, да да вот совершенно верно десять тысяч увидит совершенно верно опять, же подумайте над этим если, вы до конца не понимаете что гонка данных возникает только Там, где есть параллельность если Мы сказали

454
00:57:55.970 --> 00:58:02.720
Михаил Непряхин: гомок бокс один то есть в один момент времени. Может работать, только одна рутина на одном потоке

455
00:58:03.290 --> 00:58:08.980
Михаил Непряхин: то Гонка Гонки данных Физически Быть не может и у нас счетчик выводит десять тысяч

456
00:58:10.890 --> 00:58:13.000
Михаил Непряхин: так особенность интересная Что он

457
00:58:13.380 --> 00:58:14.460
Михаил Непряхин: Ммм

458
00:58:14.590 --> 00:58:16.560
Михаил Непряхин: Чаще всего в поди

459
00:58:16.830 --> 00:58:29.150
Михаил Непряхин: ресурсы даются именно единицы по процессу то есть редко к каким приложениям люди ставят двойку ну типа чтобы Там Два интера процесса было ну Или просто больше, единицы Допустим, в полтора

460
00:58:29.870 --> 00:58:37.240
Михаил Непряхин: и чаще, всего это действительно просто Единица Или меньше единицы пол Ноль Пять Там Или ноль двадцать Пять

461
00:58:37.640 --> 00:58:41.590
Михаил Непряхин: и в этом случае гонки данных быть Не может

462
00:58:42.270 --> 00:58:55.890
Михаил Непряхин: но все равно и

463
00:58:56.040 --> 00:59:00.660
Михаил Непряхин: и Поэтому и нужны эти ютасы чтобы защититься от этой ситуации

464
00:59:01.270 --> 00:59:05.880
Михаил Непряхин: про веру советский. Получилось Не. Раздражает этот крыс да ладно давайте проверм

465
00:59:06.930 --> 00:59:12.880
Михаил Непряхин: неужели он детектит это ну он Же очень Тупой да это рейс с розой тратит

466
00:59:13.160 --> 00:59:14.780
Михаил Непряхин: и и

467
00:59:15.440 --> 00:59:21.870
Михаил Непряхин: эроча ну! Дей тарыс я вам просто показываю что это есть видите он тоже не очень хорошо работает

468
00:59:22.330 --> 00:59:24.860
Михаил Непряхин: но странно кстати я думаю не Запретит ну

469
00:59:25.750 --> 00:59:28.960
Михаил Непряхин: в общем он просто. Есть можете на него особо не рассчитывать

470
00:59:29.330 --> 00:59:32.560
Михаил Непряхин: на обычно просто. Тесты с Этим квачком работает и Все

471
00:59:34.700 --> 00:59:42.050
Михаил Непряхин: хорошо значит Мы Работаем все-таки Не в одном потоке Мы Работаем ну такая ситуация, Мы Работаем с

472
00:59:42.530 --> 00:59:47.850
Михаил Непряхин: несколькими потоками гомок прокс если, не Указан то Берется просто? По количеству, ядер

473
00:59:48.620 --> 00:59:49.940
Михаил Непряхин: столько Бот пи

474
00:59:50.180 --> 00:59:52.530
Михаил Непряхин: ну вот у Меня здесь тридцать Два Сейчас было

475
00:59:53.450 --> 00:59:59.320
Михаил Непряхин: значит первый вариант что сделать счетчиком ну добавляем юдекс Мы добавляем митекс

476
00:59:59.990 --> 01:00:01.440
Михаил Непряхин: тимур под капотом

477
01:00:01.640 --> 01:00:08.040
Михаил Непряхин: и вот Наш, счетчик, также запускаем десять тысяч операций блокируемся

478
01:00:08.300 --> 01:00:15.590
Михаил Непряхин: дальше в эту область попадает только одна, грутина все остальные здесь ждут пока Еще пока

479
01:00:15.760 --> 01:00:29.120
Михаил Непряхин: оттуда гортина выйдет, и не разблокирует гору тина высшего разблокировала следующая только одна грутина может туда попасть все к этой Области памяти имеет в один момент времени, только одна грутина доступ

480
01:00:29.240 --> 01:00:30.780
Михаил Непряхин: мы Таким образом

481
01:00:31.080 --> 01:00:33.810
Михаил Непряхин: Защитились от Гонки данных Гонки данных Не. Будут

482
01:00:36.070 --> 01:00:37.060
Михаил Непряхин: Десять, тысяч

483
01:00:37.300 --> 01:00:42.940
Михаил Непряхин: Так если. В кубе ставится ограничение такое на один, Прост То тогда конечно теряет все преимущество от нерушек и грузин

484
01:00:43.210 --> 01:00:43.910
Михаил Непряхин: ну и

485
01:00:44.760 --> 01:00:52.580
Михаил Непряхин: как бы да но фишка Же в том что мало ли вдруг нам надо было два сипию взяли и поставили

486
01:00:52.700 --> 01:00:59.220
Михаил Непряхин: вот но это зависит от приложения конечно но чаще с приложением которым я работал я Видел. Единицу чаще всего

487
01:00:59.320 --> 01:01:12.210
Михаил Непряхин: двойка это прямо, редкость ну. Потому что и также в двух инстанциях обычно в кубе запускается а по большому счету это же два разных приложения да у них на два приложения на два пода Будет в итоге два игра Но

488
01:01:12.810 --> 01:01:23.520
Михаил Непряхин: там Никакие индексы Не нужны потому что, Там Нет никакой, Гонки данных она возникнет не может Там в одном Потоке в одной потоке, в одном Потоке провером работу короче вот Первый вариант защищаемся индексом

489
01:01:24.010 --> 01:01:28.830
Михаил Непряхин: Не забываем что в ютаксах под капота томики

490
01:01:29.000 --> 01:01:31.220
Михаил Непряхин: значит где они тут

491
01:01:32.420 --> 01:01:34.730
Михаил Непряхин: ну где То они

492
01:01:35.320 --> 01:01:36.630
Михаил Непряхин: они Там где-то есть

493
01:01:37.720 --> 01:01:39.730
Михаил Непряхин: вот он вот анатолий

494
01:01:39.940 --> 01:01:52.600
Михаил Непряхин: а что если, нам заюзать томик тоже Можем взять завязать эту Роль а томик прямо, напрямую То есть прямо, вот низко уровневый примитив. А томик это инструкция прямо, на камне на идее процессора

495
01:01:52.640 --> 01:02:01.630
Михаил Непряхин: Мы Можем к ней обратиться и сказать вот хотим взять инт шестьдесят четыре ну там министр надо Обязательно указывать либо. Не шестьдесят четыре либо. Им тридцать Два

496
01:02:01.740 --> 01:02:06.680
Михаил Непряхин: вот хотим, взять такой регистр атамарный и

497
01:02:07.780 --> 01:02:11.570
Михаил Непряхин: п хаунтер у нас теперь имеет вот такой вот тип томик

498
01:02:11.790 --> 01:02:18.350
Михаил Непряхин: ну и дальше здесь немножко другой синтез, с работы снимут инклемент выглядит вот таким образом, просто добавить один

499
01:02:18.570 --> 01:02:22.750
Михаил Непряхин: и никакой методы больше не нужен работать будет Чуть быстрее чем Интокс

500
01:02:23.920 --> 01:02:27.520
Михаил Непряхин: тоже получаем Десять тысяч

501
01:02:28.200 --> 01:02:41.210
Михаил Непряхин: вот ну потому что Мьютокссон работает тоже За один фильм отомиков ничего другого Нет в любом случае под капотом ну на самом низком уровне там где-то будут атамарные операции атомарные регистриры на процессоре

502
01:02:42.180 --> 01:02:44.290
Михаил Непряхин: и

503
01:02:44.500 --> 01:02:47.680
Михаил Непряхин: для того чтобы не писать вот этот слип,

504
01:02:47.950 --> 01:02:54.260
Михаил Непряхин: Что еще делает этот слип, Мы ждем пока Мы запустим все эти Гурутины

505
01:02:54.970 --> 01:02:57.390
Михаил Непряхин: а Просто Если Мы его Не Сделаем

506
01:02:57.980 --> 01:03:08.750
Михаил Непряхин: То у нас эти данные как бы Не успевают отработать все Гурудины и Тут сорок гортин не успевают работать тоже примерно сорок тридцать Он не успевает работать

507
01:03:08.750 --> 01:03:20.030
Михаил Непряхин: Поэтому Мы сменили Секунду. И

508
01:03:20.030 --> 01:03:22.480
Михаил Непряхин: нужен Какой То способ

509
01:03:22.480 --> 01:03:30.050
Михаил Непряхин: чтобы точно сказать что все грутины отработали какой этот способ этот способ называется эй группа

510
01:03:30.810 --> 01:03:33.800
Михаил Непряхин: значит вы группа это просто счетчик,

511
01:03:34.010 --> 01:03:42.050
Михаил Непряхин: под капотом то есть вот у нас тут, мюдекс понятно нужен ваткаунтер а вот появляется наша военная группа тоже из пакета, Синг,

512
01:03:42.450 --> 01:03:45.350
Михаил Непряхин: на низком уровне выйдет группа это

513
01:03:45.500 --> 01:03:49.120
Михаил Непряхин: тут, Стоит здесь ведь атомик симфония Есть

514
01:03:49.420 --> 01:03:56.950
Михаил Непряхин: короче что-то похожее на мьютокс По устройству Но Смысл У Него другой Смысл У Него в том что У Него под капотом амарный Счетчик

515
01:03:57.290 --> 01:04:00.970
Михаил Непряхин: и когда Мы Поднимаем гуру Тину

516
01:04:01.310 --> 01:04:03.620
Михаил Непряхин: Мы этот Счетчик Инкриминим

517
01:04:04.250 --> 01:04:12.450
Михаил Непряхин: а когда Грутина Отработала Мы его Уменьшаем на единицу. Вот как это выглядит значит мы Хотим, запустить

518
01:04:14.000 --> 01:04:15.840
Михаил Непряхин: сто, грутин

519
01:04:16.280 --> 01:04:20.760
Михаил Непряхин: Вет группу, мы добавляем единицу. На каждую террацию

520
01:04:21.110 --> 01:04:29.460
Михаил Непряхин: ну есть другой вариант Можем просто сразу сказать если мы знаем Что сто да мы этим запустим можем его Так сделать как бы в Принципе и Так и Так окей

521
01:04:31.920 --> 01:04:36.240
Михаил Непряхин: мы сказали что поместили в воен группу

522
01:04:36.610 --> 01:04:38.930
Михаил Непряхин: счетчик сто

523
01:04:39.130 --> 01:04:43.240
Михаил Непряхин: это значит что мы хотим, запустить Сейчас сто грутин

524
01:04:44.560 --> 01:04:48.330
Михаил Непряхин: ну здесь мы вцикли Форумбом запускай Сейчас посмотрим чего там

525
01:04:48.470 --> 01:04:49.230
Михаил Непряхин: а

526
01:04:50.390 --> 01:04:55.140
Михаил Непряхин: потом мы ждем значит вейт просто будет ждать

527
01:04:55.370 --> 01:04:57.020
Михаил Непряхин: мы здесь блокируемся

528
01:04:57.140 --> 01:05:07.640
Михаил Непряхин: и ждем до тех пор пока счетчик внутри не достигнет нуля а когда он станет ноль мы сможем пройти. Дальше и распечатать наш аккаунт

529
01:05:09.350 --> 01:05:11.570
Михаил Непряхин: дальше смотреть вот

530
01:05:11.830 --> 01:05:13.960
Михаил Непряхин: как он уменьшится до Нуля

531
01:05:14.460 --> 01:05:24.090
Михаил Непряхин: Мы когда Будем запускать гурутину вот эту Картину запускаем Мы первым делом сразу в диффере здесь прописываем Что вэйт групп дан

532
01:05:24.600 --> 01:05:37.590
Михаил Непряхин: он не сработает вот здесь в этот момент он сработает дифферент деструктор и он сработает по Выходу. Из колу по функции, то, есть. Вот когда мы из этого скол. По бом выходить он сработает

533
01:05:38.440 --> 01:05:44.320
Михаил Непряхин: и Таким образом отпустит нашу Картину То есть

534
01:05:44.630 --> 01:05:46.260
Михаил Непряхин: счетчик уменьши на Один

535
01:05:46.820 --> 01:05:51.300
Михаил Непряхин: если посмотреть что Там в дании То Там вот тот Же самый Эд

536
01:05:51.450 --> 01:06:00.100
Михаил Непряхин: просто со Значением минус Один, То Есть в Принципе вот можно было Можно было Так Еще сделать да просто дан типа семантический

537
01:06:00.270 --> 01:06:01.650
Михаил Непряхин: чуть красивее

538
01:06:03.070 --> 01:06:17.390
Михаил Непряхин: дальше Мы берем лок в дифферере также отпускаем этот лок вот если несколько диферов то сперва отпустится тот который был Последним вызван Там как-то Так такое получается То есть права вот этот диффер

539
01:06:17.510 --> 01:06:19.660
Михаил Непряхин: То есть который выходе ферб он

540
01:06:19.950 --> 01:06:21.410
Михаил Непряхин: в конце срабатывают

541
01:06:21.810 --> 01:06:23.860
Михаил Непряхин: вот дальше инкримини Тем счетчик,

542
01:06:24.310 --> 01:06:28.790
Михаил Непряхин: ну и вот потом еще Через. Инкриминировали а лок отпустили

543
01:06:29.590 --> 01:06:33.410
Михаил Непряхин: а минус Один. Сделали в счетчике воен группы

544
01:06:33.580 --> 01:06:37.850
Михаил Непряхин: и таким образом когда все сто грутин это сделают

545
01:06:38.160 --> 01:06:47.630
Михаил Непряхин: как только счетчик внутренний дойдет до Нуля Мы напечатан Наш командор и таким образом, не будем ждать

546
01:06:47.950 --> 01:06:50.180
Михаил Непряхин: Восемьдесят тысяч, два

547
01:06:51.070 --> 01:07:04.080
Михаил Непряхин: Еще видите почему как, бы можно внутри Делать для вот здесь вот Делать чтобы вот это вот число только один раз менять и оно вот не надо было здесь менять

548
01:07:06.100 --> 01:07:14.920
Михаил Непряхин: еще такая особенность вот эту воен группу эд нельзя делать внутри гурутины вот так вот обязательно надо делать перед гурутиной

549
01:07:14.920 --> 01:07:26.730
Михаил Непряхин: иначе мы в город кинута можем вообще не попасть не успеть зайти а программа уже закончится и мы здесь просто. Пролетим и все Поэтому надо железно до вызова бурутиной Щечек инкметить

550
01:07:27.540 --> 01:07:37.960
Михаил Непряхин: так ну вот уж видите оно быстро, отрабатывает десять. Тысяч новости сделан сто где десять. Миллионов вот десять. Миллионов я чуть-чуть чуть-чуть подрежу уже работать

551
01:07:38.180 --> 01:07:38.870
Михаил Непряхин: а

552
01:07:39.340 --> 01:07:42.360
Михаил Непряхин: но не надо ни сколько ждать

553
01:07:42.630 --> 01:08:02.330
Михаил Непряхин: если машина Медленная ну ну короче никаких слипов не надо да то Есть мы просто физически у нас Есть счетчик который считает сколько у нас Сейчас грутин запущена и мы понимаем что если, мы хотим, подождать пока они все отработают мы Таким образом можем легко поджидать

554
01:08:06.070 --> 01:08:11.160
Михаил Непряхин: так если, вы мог прокс один хотя бы сервер будут входящие запросы обрабатывать параллельно,

555
01:08:11.380 --> 01:08:16.890
Михаил Непряхин: или только один запрос за один Раз или трепы сервер же тоже на гурутинах под капотом

556
01:08:17.040 --> 01:08:20.370
Михаил Непряхин: хорошо Давайте хороший вопрос хороший вопрос от Дмитрия

557
01:08:20.660 --> 01:08:25.700
Михаил Непряхин: Давайте подумаем значит вот У нас представим Что У нас сервер

558
01:08:25.939 --> 01:08:27.810
Михаил Непряхин: где у нас Там, был пример

559
01:08:30.270 --> 01:08:38.830
Михаил Непряхин: вот здесь да вот у нас сервер вот здесь в цикле допустим приходят коннекшины запросы к нам, приходят а в бутине Мы их арбатом

560
01:08:39.399 --> 01:08:42.750
Михаил Непряхин: есть ли у нас Пи, один

561
01:08:43.609 --> 01:08:47.250
Михаил Непряхин: это значит Что у нас Одновременно работает только один поток

562
01:08:48.359 --> 01:08:50.689
Михаил Непряхин: но ведь у нас язык

563
01:08:51.359 --> 01:08:56.189
Михаил Непряхин: рожден синхронным то есть все что вы видите это синхронное

564
01:08:56.520 --> 01:08:59.279
Михаил Непряхин: это не синхронный код это а синхронный код

565
01:08:59.550 --> 01:09:07.130
Михаил Непряхин: синхронного кода ну как бы есть да можно Написать Но имеется в виду что если мы с грузинами работаем они себе, синхронно Работают

566
01:09:07.850 --> 01:09:14.899
Михаил Непряхин: и естественно Свобод, отлично отрабатывать и естественно сервер будет, работать

567
01:09:15.069 --> 01:09:25.270
Михаил Непряхин: будет, брать сколько надо запросов ну семьдесят тысяч рпц где стандартный сержант где-то перемалывают не знаю пятьдесят тысяч рпц может легко переваривать в один поток

568
01:09:25.840 --> 01:09:38.649
Михаил Непряхин: ну ладно нелегко может быть тридцать тысяч рпц в один поток он будет переваривать но будет и прикол. В том что а синхронность все синхронно ну и что что ни параллельно

569
01:09:38.859 --> 01:09:52.410
Михаил Непряхин: и конкурентно все равно все Одновременно и и

570
01:09:52.970 --> 01:09:55.370
Михаил Непряхин: Так что да все будет работать отлично

571
01:09:55.640 --> 01:09:59.870
Михаил Непряхин: ни один, запрос за Раз сколько запросов надо за Раз

572
01:10:01.230 --> 01:10:05.840
Михаил Непряхин: опять, же как бы понятно, ли это вот я уж сказал вот всем. Ли это понятно

573
01:10:06.230 --> 01:10:08.350
Михаил Непряхин: Что почему у нас сервер

574
01:10:08.520 --> 01:10:12.710
Михаил Непряхин: может на гурутинах обрабатывать много запросов за Раз,

575
01:10:13.860 --> 01:10:15.720
Михаил Непряхин: давайте нарисуем

576
01:10:18.160 --> 01:10:19.750
Михаил Непряхин: городские Вопросы, возникают

577
01:10:23.490 --> 01:10:25.440
Михаил Непряхин: вот смотрите ядро. Одно,

578
01:10:27.280 --> 01:10:29.590
Михаил Непряхин: едро. Одно, То есть У нас один поток

579
01:10:30.010 --> 01:10:31.410
Михаил Непряхин: Пришел запрос

580
01:10:32.310 --> 01:10:34.220
Михаил Непряхин: мы его быстро отработали

581
01:10:34.600 --> 01:10:36.600
Михаил Непряхин: иу

582
01:10:37.290 --> 01:10:39.430
Михаил Непряхин: Даем ответ Ждем сеть

583
01:10:39.540 --> 01:10:40.740
Михаил Непряхин: А сами Ждем

584
01:10:41.960 --> 01:10:52.690
Михаил Непряхин: а следующий запрос быстро отработали даем или допустим приняли принимаем ответ ну Ждем пока мы его принимаем приняли потом опять, продолжили работать и вот они как бы

585
01:10:52.830 --> 01:10:56.150
Михаил Непряхин: разные Кусочки программы они работают по чуть чуть

586
01:10:56.690 --> 01:11:14.250
Михаил Непряхин: и ставятся на паузу ставятся на паузу ставятся на паузу потом Раз, там время пришло и они обратно опять, поработают опять, на паузу том опять, поработают и как. Бы получается вот такое что одна и Та Же Программа, вот Она здесь запрос пришел и немножко поработала Ждем

587
01:11:14.250 --> 01:11:22.370
Михаил Непряхин: потом Мы поработали даем ответ. Опять. Ждем ответа Потом Там нам, клиент ответил Что Не знаю Там, какая-то проблема, надо этот раз сделать

588
01:11:22.370 --> 01:11:32.720
Михаил Непряхин: потом Мы Опять, сделали этот рай потом Опять, Бай Там, Отправляем потом все значит запрос отработал то есть вот этот один, запрос он на процессы ли был вот здесь здесь здесь здесь

589
01:11:33.190 --> 01:11:51.130
Михаил Непряхин: и вот их там Тридцать тысяч каждый здесь поработал здесь поработал здесь пропадал и когда Мы видим если, Мы со стороны операционной системы посмотрим чего Мы Там такое делаем То вот просто сплошная загрузка Мы просто на процессоры чего-то делали а То что Там один запрос он не сплошняком

590
01:11:51.130 --> 01:12:08.720
Михаил Непряхин: вот так, вот Работал работал работал а вот чуть-чуть поработал чуть-чуть поработал вот-вот вот так оно это и есть синхронность это и есть конкурентность и Разница лишь в том если, у нас еще появляется один поток ну мы можем просто в два раза больше этих вот задачек раскидать по разным арам

591
01:12:08.720 --> 01:12:28.260
Михаил Непряхин: и если мы допустим какой-то запрос отрабатываем и

592
01:12:28.260 --> 01:12:43.110
Михаил Непряхин: запрос здесь выполнялся здесь выполнялся здесь и пронесся потом эта грутина у нее кончились задачи она взяла своровала задачи из Этой грутины, и теперь, этот поток начал здесь выполняться на этом потоке, а потом этот поток опять может ее своровать

593
01:12:43.160 --> 01:13:02.620
Михаил Непряхин: и вот Так как бы Мы получается и

594
01:13:04.530 --> 01:13:05.650
Михаил Непряхин: так

595
01:13:09.800 --> 01:13:14.990
Михаил Непряхин: Всегда писали диффер Вагадан прежде Диферу ганглог

596
01:13:15.840 --> 01:13:25.570
Михаил Непряхин: ну вы просто дифер вы года Всегда вначале пишут вот функция Начинается вы просто сразу отпускаете То есть как бы вот эта вот эта часть шаблонная

597
01:13:25.680 --> 01:13:36.600
Михаил Непряхин: Там версии один двадцать пять не надо Будет Это писать Отдельно, Там сокращенный синтексист для этого Ну Там под копытом То же самое но короче вот эта часть она шаблонная

598
01:13:38.630 --> 01:13:51.040
Михаил Непряхин: Так что если. У нас кью джобс например так парер Или жителей сжатия Картинок стоит использовать кумок прокс один

599
01:13:52.120 --> 01:13:56.610
Михаил Непряхин: аа ну. Если У вас какой-то Сипию Ваню пожатия Картинок перепарся.

600
01:13:56.730 --> 01:14:01.180
Михаил Непряхин: Чем больше Будет доступно потоков. Тем Мы быстрее будем работать.

601
01:14:01.290 --> 01:14:16.520
Михаил Непряхин: Можно конечно и один сделать Но сделайте два два раза могут быстрее Сжаться картинки и Очереди Разгребаться то Есть здесь Вот гоу фишка в том что.

602
01:14:16.730 --> 01:14:30.990
Михаил Непряхин: Будет десять э гомок прокс ну в десять Раз, быстрее будете работать будет сто вы сто Раз, будете быстрее работе. Сто Раз, быстрее будете жать картинки и разгребать очередь ну если конечно там где-нибудь вуткое место, Не в откте юдекс

603
01:14:31.000 --> 01:14:37.000
Михаил Непряхин: если. Как-нибудь там вот эта, очередь обрабатываться. Через меток смеют Так вот все тормозить и конечно не будет

604
01:14:37.080 --> 01:14:54.510
Михаил Непряхин: Разница между одним потоком и десятью потоками в десять, Раз, она будет меньше но так, вот грубо, говоря да то есть оно очень легко. Может объединить сколько голмаг прокс поставили во столько. Раз быстрее будете работать ну если у вас гомок прост конечно не больше чем количество ядер

605
01:14:54.620 --> 01:15:00.090
Михаил Непряхин: потому что если У вас ядер два доступно а вы поставите гомок прокс десять.

606
01:15:00.240 --> 01:15:15.150
Михаил Непряхин: У вас будет уверхает на переключениях вот Этом Контексте Вичи То есть вы потеряете все преимущество Поэтому Там автомат он Не Дает Этого сделать Автоматически ставится. Гомопрокс равным. Количеству физических ядер в Машине

607
01:15:17.430 --> 01:15:18.800
Михаил Непряхин: так

608
01:15:19.690 --> 01:15:22.620
Михаил Непряхин: так так проводят группы Ммм

609
01:15:30.130 --> 01:15:38.970
Михаил Непряхин: так все ли понятно, Своими группами на Уровне группы и вот грутин называет база прям база база основное с чем постоянно мы работаем

610
01:15:42.830 --> 01:15:44.110
Михаил Непряхин: дальше

611
01:15:45.480 --> 01:15:51.910
Михаил Непряхин: смотрите еще какая Штука Тут же пример Своими группами Между героем запускаемой группы

612
01:15:53.130 --> 01:15:58.340
Михаил Непряхин: Сразу. Говорим, Что у нас будет три горутины мы хотим, запустить три Гороти

613
01:15:58.470 --> 01:16:16.170
Михаил Непряхин: ну запоминаем время Сколько Сейчас времени для того чтобы потом показать Сколько у нас времени здесь есть Функция синс вот она берет разницу между вот то что мы в аргументе передаем и сколько времени Сейчас короче говоря просто покажет Сколько Времени Мы работали Вот отсюда отсюда в эту часть Я Хочу замерить

614
01:16:16.840 --> 01:16:20.240
Михаил Непряхин: дальше запускаем три гору Тины.

615
01:16:21.150 --> 01:16:29.000
Михаил Непряхин: И ждем Пока они Выполнятся через этот шаблон Своими группами вот вы группы создали

616
01:16:29.850 --> 01:16:39.460
Михаил Непряхин: и ждем ну и понятно что в каждой картине мы делаем в гайдан чтобы узнать когда грутина отработала

617
01:16:40.260 --> 01:16:44.270
Михаил Непряхин: каждая грутина спит по секунде

618
01:16:45.510 --> 01:16:49.470
Михаил Непряхин: То есть Как, Будто бы Мы ходим по сети

619
01:16:49.610 --> 01:16:55.060
Михаил Непряхин: в какой То сервис вот в Один, Сервис здоровье в третий и мы хотим, это Делать Одновременно

620
01:16:56.050 --> 01:17:04.450
Михаил Непряхин: Сколько времени отработает эта Программа, Сколько времени будет Отрабатывать эта Программа, Давайте Ваша версия.

621
01:17:04.610 --> 01:17:07.590
Михаил Непряхин: Так одна секунда на секунду очень больше на секунду так

622
01:17:08.430 --> 01:17:09.590
Михаил Непряхин: секунда

623
01:17:11.080 --> 01:17:15.110
Михаил Непряхин: так а есть кто думает три секунды

624
01:17:18.150 --> 01:17:23.710
Михаил Непряхин: или или все правильные ответы Знают ну, короче да смотрите

625
01:17:24.660 --> 01:17:32.160
Михаил Непряхин: естественно это Киллер фича языка да то Есть Мы можем Одновременно вот это очень Так вот легко написать

626
01:17:32.240 --> 01:17:49.320
Михаил Непряхин: естественно Новый Год отрабатывает одну. Секунду ну чуть больше Окей там какой-то живой архат есть на запуск этих трех бурутин Их планирования и так далее но видите Какой маленький этого верха то есть тут триста сорок микросекунд

627
01:17:49.720 --> 01:17:55.280
Михаил Непряхин: и на самом деле там сотни грутин там тоже Небольшой верхэт

628
01:17:56.050 --> 01:17:59.940
Михаил Непряхин: в ответную Картину можно остановить выполнение, других рутин

629
01:18:00.580 --> 01:18:04.260
Михаил Непряхин: можно можно пати паткан тоже Посмотрим

630
01:18:04.740 --> 01:18:06.120
Михаил Непряхин: естественно можно

631
01:18:07.590 --> 01:18:08.630
Михаил Непряхин: в и

632
01:18:08.740 --> 01:18:10.440
Михаил Непряхин: короче вот Это Важно понимать

633
01:18:11.660 --> 01:18:13.610
Михаил Непряхин: а теперь смотри идем

634
01:18:14.070 --> 01:18:16.930
Михаил Непряхин: Мы Берем

635
01:18:17.710 --> 01:18:19.280
Михаил Непряхин: и Делаем здесь

636
01:18:19.410 --> 01:18:20.850
Михаил Непряхин: гоуматокс

637
01:18:20.960 --> 01:18:21.880
Михаил Непряхин: один

638
01:18:22.500 --> 01:18:37.790
Михаил Непряхин: То Есть Запустим это все и

639
01:18:38.440 --> 01:18:45.490
Михаил Непряхин: как бы это именно, пи То Есть Мы закономерно что пи количество вот этих процессоров внутри ронтайма Гошного оно будет, все равно один

640
01:18:45.630 --> 01:18:48.630
Михаил Непряхин: Давайте начнем ваши прогнозы сколько, теперь будет, выполняется программа

641
01:18:50.600 --> 01:18:53.660
Михаил Непряхин: три секунды пресс Архат Одна законна три секунды

642
01:18:56.260 --> 01:18:58.260
Михаил Непряхин: Давайте значит кто

643
01:18:58.530 --> 01:19:04.200
Михаил Непряхин: кто думает что Одна секунда Давайте кто хочет сказать почему Одна секунда кто хочет защитить эту версию.

644
01:19:10.100 --> 01:19:12.090
David R: А я могу порассуждать.

645
01:19:12.090 --> 01:19:13.020
Михаил Непряхин: Да.

646
01:19:13.420 --> 01:19:20.330
David R: А когда Мы вот в каждой карутине говорим Тайм Слип Одна Секунда

647
01:19:20.860 --> 01:19:21.940
David R: а

648
01:19:25.850 --> 01:19:35.450
David R: Мы же в этот момент аа как это делается вот я питанист как я это делаю в питоме когда я вижу что вот будет У меня где то вызов системной функции я говорю у

649
01:19:35.660 --> 01:19:46.660
David R: и явно указывал вот в этом месте будет вызов системной функции, ты Пожалуйста, вот тут пока там что-то Шутит там в операционной системе переключись там на другую карутину

650
01:19:46.880 --> 01:20:05.810
David R: а тут как я понимаю эта работа как Это работает что планировщик гол Он под капотом сам понимает где у него? Находятся системные вызовы и в момент обращения к системным вызовам пока Не Поступит ответ. От операционной системы он переключается На другие карутены и в данном случае у нас функция слип это

651
01:20:05.830 --> 01:20:16.500
David R: обращение к системной функции он говорит о бессознательной, системе вот ты Там через Там Одну Секунду сообщи, мне что ты Там поспал Одну Секунду и сам в это время Переключается на другую карутину

652
01:20:16.500 --> 01:20:26.760
David R: и так вот У нас даже если гомок прокс единицы то Одновременно будут Выполнены все три ну то есть он разом Скажет три раза Скажет операционной системе вот ты Там

653
01:20:26.760 --> 01:20:38.650
David R: три раза имитируя сон по одной секунде и потом мне сообщил, что ты три раза поспал по одной секунде и по факту это получается Что будет условно Одновременно.

654
01:20:39.720 --> 01:20:46.280
Михаил Непряхин: Ну Да Да правильное объяснение Да Совершенно верно то есть, Это блокирующая Операция.

655
01:20:46.410 --> 01:20:51.460
Михаил Непряхин: Мы в Этот момент Э снимаем грутинность Выполнения

656
01:20:51.940 --> 01:20:57.160
Михаил Непряхин: и она потом по истечении этого счетчика сама снова поднимется

657
01:20:57.820 --> 01:21:11.570
Михаил Непряхин: и Поэтому никаких трех Секунд здесь Не будет вот до этого то Что я про сервер Показывал Вот-вот этот вот это Рисовал то есть в этом и смысл это и есть аюо, Баунд вместо

658
01:21:12.120 --> 01:21:21.650
Михаил Непряхин: слипа может быть мютакс То же самое произойдет Мы заблокируемся либо поход. По сети То есть вот здесь Мы чего нибудь по сети отправляем принимаем

659
01:21:21.760 --> 01:21:27.890
Михаил Непряхин: читаем с диском операции то же самое вот то Есть это и Есть а его баун

660
01:21:28.150 --> 01:21:28.900
Михаил Непряхин: а

661
01:21:29.190 --> 01:21:48.540
Михаил Непряхин: а его баун это когда Мы на процессоры ничего не делаем Ждем ждать это Дешево Поэтому из одного, игра процессора Можно выжить сумасшедший перформанс для сервера который все Что делает это блин ждет потому что Мы на серверах Только и Делаем Суждем

662
01:21:48.650 --> 01:21:57.400
Михаил Непряхин: тут послали запрос Там Егождем Принимаем тут хэндшейк Там надо Заголовки отправить здесь боди начали отправлять

663
01:21:57.400 --> 01:22:09.210
Михаил Непряхин: клиент медленный и Ждем Пока он нам ответит, получил. Он не получил, а вот наконец-то получил, то есть мы Ждем Ждем Ждем Ждем ждем бесконечно Ждем. Для процессора это просто бесконечное долгое ожидание

664
01:22:09.210 --> 01:22:13.990
Михаил Непряхин: и Поэтому когда мы Только и сделаем шудем в наших программах мы и можем

665
01:22:13.990 --> 01:22:38.270
Михаил Непряхин: как и

666
01:22:38.310 --> 01:22:51.970
Михаил Непряхин: и это суперважно понимать пром вот база база если, здесь вопросы, есть если, вы до конца не поняли даже тупой вопрос давайте задайте еще Раз, объясню если, что то где то не до конца понятно, вот все ли здесь до конца понятно.

667
01:22:53.100 --> 01:22:54.820
Илиас Эззахид: Можно, вопрос.

668
01:22:54.820 --> 01:22:55.720
Михаил Непряхин: Давайте.

669
01:22:56.640 --> 01:23:09.230
Илиас Эззахид: Я как человек изджего скрипта Новый думаю есть петр иваныч то есть это как будто для нас все всегда синхронно везде есть оэйты.

670
01:23:09.790 --> 01:23:15.340
Михаил Непряхин: Да просто мы их не видим здесь на самом деле как баувейт да

671
01:23:16.060 --> 01:23:19.040
Михаил Непряхин: а авейт но мы его не видим

672
01:23:20.750 --> 01:23:24.760
Михаил Непряхин: то Есть Асинг, вот это вот это прямо Синг,

673
01:23:25.120 --> 01:23:30.080
Михаил Непряхин: вы это просто можете думать как о басинке вот об Этой штуке а aaaaйт

674
01:23:30.340 --> 01:23:34.550
Михаил Непряхин: э ну значит во-первых спим начался вейт

675
01:23:37.910 --> 01:23:53.870
Михаил Непряхин: э спим это точно авейт да и вообще везде где у вас был вейт в джесси Или в питоме здесь он Будет просто невидимый на мюток Там на мьюток вот завочились Мы ну все э

676
01:23:53.990 --> 01:23:58.890
Михаил Непряхин: э спим если, замучились ну Мы либо сюда зашли да либо тут заводчились и давали

677
01:23:59.190 --> 01:24:03.150
Михаил Непряхин: а вот ну на Слипе понятно, Сто процентов

678
01:24:03.440 --> 01:24:07.930
Михаил Непряхин: ну Там еще это с Каналами когда Мы работаем там дойдем тоже до этого

679
01:24:08.260 --> 01:24:09.120
Михаил Непряхин: да

680
01:24:10.560 --> 01:24:14.040
Михаил Непряхин: если. Оставить уроки то будет три секунды

681
01:24:14.190 --> 01:24:16.650
Михаил Непряхин: ну если. Заблокировать то конечно

682
01:24:18.450 --> 01:24:19.850
Михаил Непряхин: так

683
01:24:20.620 --> 01:24:22.640
Михаил Непряхин: где то я диснейюс

684
01:24:24.320 --> 01:24:28.550
Михаил Непряхин: так давайте Еще глупый вопрос если! Вдруг есть.

685
01:24:28.550 --> 01:24:38.550
David R: А можно просто вопрос У нас там дальше будет про утечку. Гарутена я просто помню где-то это слышал Но Не помню сам термин и почему возникает вообще утечка ключе.

686
01:24:38.650 --> 01:24:47.940
Михаил Непряхин: Да поговорим про это но утечка Крути возникает тогда когда мы ее Не отпускаем то есть вот она работает работает

687
01:24:48.140 --> 01:24:51.480
Михаил Непряхин: и где-то заблокировалась и

688
01:24:51.890 --> 01:24:53.980
Михаил Непряхин: и все она остается

689
01:24:54.550 --> 01:25:10.730
Михаил Непряхин: повисший зависший грубо говоря бесконечно Спим грутина бесконечно спит и никак Не завершается а Это. Же ресурс и Раз, У нас Есть такое место, в коде то значит они накапливаются и Это видно по графикам Поэтому Есть графики Которые показывают короче и

690
01:25:10.750 --> 01:25:24.950
Михаил Непряхин: в прометеу автоматически с Пода гошенова он снимает данные о Количестве грутин Сейчас запущенных просто если этот счетчик растет значит гуртину вытекают Почему утекают Ну потому что как,

691
01:25:24.950 --> 01:25:31.350
Михаил Непряхин: Ну По аналогии с Памятью Если У вас Память постоянно Растет Растет Пока Не доходит До киллера

692
01:25:31.350 --> 01:25:52.340
Михаил Непряхин: и под закрывается рот Говорят Память утекает а тут Гурутина утекает нечто похожее ну обычно это не приводит прямо, там по памяти естественно Мы тоже начинаем кечь потому что и

693
01:25:53.750 --> 01:26:05.960
Михаил Непряхин: да ну Или цикл который будет выполняться одну Секунду, да если цикл тоже долго если цикл долго работает тоже Там Будет Авейт через Десять секунд

694
01:26:06.920 --> 01:26:08.070
Михаил Непряхин: так ванна

695
01:26:08.710 --> 01:26:10.310
Михаил Непряхин: ищи интересный примитив

696
01:26:10.500 --> 01:26:13.060
Михаил Непряхин: синхронизация из пакета, Синг,

697
01:26:13.770 --> 01:26:18.040
Михаил Непряхин: значит есть такая штука Синг,

698
01:26:18.410 --> 01:26:19.800
Михаил Непряхин: вот син кванс

699
01:26:20.360 --> 01:26:23.110
Михаил Непряхин: У Меня есть тоже пример с Военгруппой

700
01:26:23.560 --> 01:26:24.790
Михаил Непряхин: и

701
01:26:25.540 --> 01:26:30.570
Михаил Непряхин: ээ наш примитив позволяет запустить какую То функцию ровно Один. Раз

702
01:26:30.740 --> 01:26:49.810
Михаил Непряхин: Например, есть какая-то функция Инициатива ресурсов допустим Мы коннекнемся к базе данных Мы хотим, только один Раз, прокомментиться Мы не хотим, это сделать много Раз, а Кот Так написан Что, вот Он может только наместиться много Раз из разных грутин например, может и

703
01:26:49.850 --> 01:26:59.170
Михаил Непряхин: и вот мы можем просто этот баланс вызвать метод у Него ду и передать здесь функцию которую Мы хотим? Вызвать ровно один раз

704
01:26:59.540 --> 01:27:03.300
Михаил Непряхин: и видите вот я допускаю пять операций

705
01:27:03.490 --> 01:27:08.110
Михаил Непряхин: и соответственно здесь запустится пять горотин но

706
01:27:08.220 --> 01:27:11.110
Михаил Непряхин: вот эта функция нет запустится ровно один Раз,

707
01:27:11.280 --> 01:27:16.720
Михаил Непряхин: а в следующие разы она отбросится потому что она уже была вызвана вот инициализация, один раз

708
01:27:16.840 --> 01:27:20.150
Михаил Непряхин: и вот пять грутин было завершено

709
01:27:20.750 --> 01:27:29.740
Михаил Непряхин: Редко используемая штука даже я вот пример привел спонсором, с коннекшинами и по факту там, нету с этим Проблем никаких

710
01:27:29.940 --> 01:27:34.560
Михаил Непряхин: Там можно просто это флажком сделать это важно тогда когда Мы имеем дело с Грузинами

711
01:27:34.940 --> 01:27:41.930
Михаил Непряхин: потому. Что обычно вся индиализация она происходит в одной Грутине Мейн Куинн это тоже грутина то есть вот десять, на самом деле

712
01:27:42.680 --> 01:27:53.700
Михаил Непряхин: тоже как вот невидимый голос стоит потому Что аа Единица исполнения в гуу эта картина ничего не может работать ни в чем, другом, кроме как в гуркинах

713
01:27:55.210 --> 01:28:00.100
Михаил Непряхин: ну ему важно понимать этот ход это все равно что вот Асинг, он здесь отбыл.

714
01:28:04.210 --> 01:28:05.320
Илиас Эззахид: Можно, вопрос.

715
01:28:05.320 --> 01:28:06.280
Михаил Непряхин: Давайте.

716
01:28:06.280 --> 01:28:22.040
Илиас Эззахид: Вы показали что есть ну много абстракций синхронных метаксы каналы мэтгруппы ну естественно у каналов есть много абстракций еще патерных и непонятно где что использовать когда.

717
01:28:22.410 --> 01:28:26.430
Михаил Непряхин: Держат Сразу конечно как его составлют Без этого шанс Это, все

718
01:28:26.790 --> 01:28:30.250
Михаил Непряхин: посмотрим Не прервайте Без этого Не оставлю

719
01:28:30.570 --> 01:28:38.980
Михаил Непряхин: Так как вы мне Удобно думать, Что картина это функция которая может быть прервана Не явно в Любом исполнении Ну да да мы в общем-то о них так и думаем да

720
01:28:39.140 --> 01:28:41.640
Михаил Непряхин: просто вся. Программа, на гол

721
01:28:41.750 --> 01:28:43.790
Михаил Непряхин: из этого состоит в общем-то

722
01:28:45.010 --> 01:28:48.680
Михаил Непряхин: так теперь теперь поговорим про каналы

723
01:28:50.280 --> 01:28:51.860
Михаил Непряхин: значит

724
01:28:52.400 --> 01:28:54.210
Михаил Непряхин: смотрите канал

725
01:28:54.360 --> 01:28:57.520
Михаил Непряхин: у нас По дефолту начался сдемонал

726
01:28:58.450 --> 01:29:07.990
Михаил Непряхин: Ну, канала эта кольцевая очередь. Там Внутри мюзикл. Нужен Он для того чтобы Две Гурутины могли. Между Собой повзаимодействовать

727
01:29:09.360 --> 01:29:12.610
Михаил Непряхин: а потому Что если Мы это будем делать.

728
01:29:13.830 --> 01:29:26.320
Михаил Непряхин: Как То по другому мог бы может возникнуть гонко данных надо мюдекс делать. А здесь вот сделали такую удобную абстракцию которая уже Внутри имеет? Метакс По Сути Это слайс

729
01:29:26.460 --> 01:29:32.810
Михаил Непряхин: Ну, с митоксом и Он кольцевой и вот Это называется канал значит ключевое слово. Чен

730
01:29:33.010 --> 01:29:40.240
Михаил Непряхин: и вот тип состоит из двух Ключевых слов то есть Первая часть а второе Это какой тип канала

731
01:29:40.480 --> 01:29:42.840
Михаил Непряхин: ну и соответственно тут, может Быть любого типа

732
01:29:43.570 --> 01:29:45.450
Михаил Непряхин: вот этот вот канал интер

733
01:29:46.090 --> 01:29:48.330
Михаил Непряхин: можно думать о нем как о свайсе, ментов

734
01:29:48.620 --> 01:29:50.950
Михаил Непряхин: который вот он только закольцованный

735
01:29:51.590 --> 01:29:54.300
Михаил Непряхин: и безопасный для работы из разных орден,

736
01:29:55.200 --> 01:29:57.310
Михаил Непряхин: вот так вот каналы не создаются

737
01:29:57.540 --> 01:30:00.720
Михаил Непряхин: я не знаю такая же беда как и с мапой

738
01:30:00.900 --> 01:30:09.310
Михаил Непряхин: что зеро вэлью канала оно тоже нил. Как и у мамы То есть это тонкий указатель канал это просто указатель

739
01:30:09.590 --> 01:30:10.690
Михаил Непряхин: так же как папа

740
01:30:11.520 --> 01:30:18.180
Михаил Непряхин: и так же как мама Ниловый канал но абсолютно не имеет. Никакого смысла Ни с ним ничего нельзя делать.

741
01:30:18.510 --> 01:30:22.470
Михаил Непряхин: И он так Никогда Не создается по мне Так это косяк дизайна

742
01:30:22.710 --> 01:30:26.400
Михаил Непряхин: и в итоге вот каналы Всегда, в атаку создаются через мейк

743
01:30:26.870 --> 01:30:32.450
Михаил Непряхин: тут, меейк используется для каналов мап и свайсов

744
01:30:32.980 --> 01:30:44.270
Михаил Непряхин: и не только вот у каналов Здесь может Быть буферизация еще либо вот так вот он Без буферизации либо так с буффризацией, Но об Этом Тоже Мы говорим зачем надо

745
01:30:44.710 --> 01:30:48.340
Михаил Непряхин: вот значит такой Канал абсолютно Не имеет смысла Он нил

746
01:30:48.510 --> 01:31:00.010
Михаил Непряхин: в Него нельзя ни писать ни читать то. Есть с операцией, вот эта операция, мы ну, как, вообще читается вот канал Если, справа от него, Стрелка то. Мы в него, пишем

747
01:31:00.980 --> 01:31:15.210
Михаил Непряхин: то есть вот это Мы пишем единицу канал если Слева от Него старека то Мы читаем из канала вот это, Мы читаем в пустоту канал и когда Мы прочитали по канале Это значение исчезает То есть. Мы прочитали и все как бы его Там Нет

748
01:31:16.820 --> 01:31:17.570
Михаил Непряхин: ну и

749
01:31:17.860 --> 01:31:22.400
Михаил Непряхин: ну здесь мы создали уже канал буфлизированный с буфером десять

750
01:31:22.810 --> 01:31:26.030
Михаил Непряхин: и вот Мы в него можем записать то из ничего не записали

751
01:31:27.230 --> 01:31:28.370
Михаил Непряхин: читать можем

752
01:31:28.990 --> 01:31:33.000
Михаил Непряхин: а видите просто синтекси с тряпочкой вот в этом месте м

753
01:31:33.300 --> 01:31:37.770
Михаил Непряхин: получим значение из канала и Сможем вывести вот сорок два года.

754
01:31:37.910 --> 01:31:39.980
Михаил Непряхин: У кого, Мы можем проверить лен

755
01:31:40.380 --> 01:31:42.490
Михаил Непряхин: несмотря на То что это

756
01:31:42.660 --> 01:31:56.400
Михаил Непряхин: тонкий указатель это просто указатель лен Мы можем взять текущая эта не емкость канала выше емкость канала вот Она да вот эта копасть у канала оно просто фиксировано вначале и все

757
01:31:56.510 --> 01:32:00.580
Михаил Непряхин: оно не меняется никак поскольку вот дали скуку,

758
01:32:01.370 --> 01:32:05.220
Михаил Непряхин: с Какой емкостью мы создали изначальный канал вот Она Так и есть

759
01:32:05.440 --> 01:32:16.450
Михаил Непряхин: а лен оно будет в зависимости от того Сколько мы туда, положили элементов вот положили Мы туда три элемента но один уже достали значит лен будет Два вот в этом месте

760
01:32:17.160 --> 01:32:23.140
Михаил Непряхин: ну если, посмотреть сколько каналов занимают на стеке то это будет восемь байден, ты будет просто. Указать

761
01:32:26.630 --> 01:32:40.380
Михаил Непряхин: значит пьют немножко пробуфлизированный канал значит вот буффализированный канал когда мы указываем здесь какую-то Емкость Мы говорим Что. Наш канал Будет емкостью три значит Мы туда кладем три элемента

762
01:32:41.460 --> 01:32:44.160
Михаил Непряхин: если Мы туда Заходим положить четвертый элемент

763
01:32:44.280 --> 01:32:47.690
Михаил Непряхин: то просто получится город дэдвок

764
01:32:48.140 --> 01:32:52.980
Михаил Непряхин: тенденвок почему потому, что мы пытаемся положить

765
01:32:53.420 --> 01:33:00.400
Михаил Непряхин: никто не читает канал короч как бы если, вы хотите, вот так вот Загружать Что. То в Канал его должен с другой стороны кто То читать

766
01:33:01.070 --> 01:33:08.350
Михаил Непряхин: Поэтому Вот Так вот вначале Мы Не можем превышать емкость к опасности Если его никто Не читает Если вот его никто Не читает все нормально Там

767
01:33:08.510 --> 01:33:09.540
Михаил Непряхин: Отрабатывать

768
01:33:09.990 --> 01:33:11.370
Михаил Непряхин: значит и

769
01:33:11.480 --> 01:33:26.500
Михаил Непряхин: Это Мы записываем в Канал то есть стрелочка Справа от канала если с тревожкой Слева ткнул Мы искренно читаем и Сразу, присваиваем в другую перемену то есть синтексис Видео как бы вы да вот сюда Мы получили То что из канала

770
01:33:26.950 --> 01:33:31.840
Михаил Непряхин: здесь Мы еще блокируемся если, вдруг канале ничего Нет То здесь Мы заблокируемся

771
01:33:36.590 --> 01:33:44.100
Михаил Непряхин: если ничего нет в канале если в Канаде здесь что-то есть значит Мы сразу прочитаем и вот туда присвоим А если в канале ничего нет Мы Будем просто, здесь ждать

772
01:33:45.330 --> 01:33:47.280
Михаил Непряхин: и и

773
01:33:47.470 --> 01:33:53.670
Михаил Непряхин: Ну печатаем влю будет Единица потому Что Мы туда первым положили единицу

774
01:33:55.540 --> 01:33:58.150
Михаил Непряхин: дальше читаем в пустоту

775
01:33:58.430 --> 01:34:00.020
Михаил Непряхин: Ну То же самое Что

776
01:34:00.940 --> 01:34:02.310
Михаил Непряхин: То же самое Что вот Так вот

777
01:34:03.420 --> 01:34:08.050
Михаил Непряхин: То есть как Бы Мы просто в Никуда прочитали уничтожили сообщения

778
01:34:08.700 --> 01:34:13.860
Михаил Непряхин: дальше следующее сообщение читаем но здесь уже будет тройка потом здесь волю вот три

779
01:34:14.080 --> 01:34:17.650
Михаил Непряхин: что двойку вот эту двойку Мы в никуда прочитали просто слили

780
01:34:18.340 --> 01:34:19.920
Михаил Непряхин: вот вывод один три

781
01:34:21.800 --> 01:34:23.220
Михаил Непряхин: тайная земля ничто

782
01:34:24.130 --> 01:34:28.020
Михаил Непряхин: операция с ним коровами это паника да там просто паника Всегда

783
01:34:28.570 --> 01:34:34.180
Михаил Непряхин: ну! Эээ в селекте по моему можно нем канал использовать вот единственный вариант Так, Везде паника

784
01:34:34.740 --> 01:34:41.310
Михаил Непряхин: То есть если Мы читаем из канала То место, в канале освобождает верно и мы можем что-нибудь нащу положить верно

785
01:34:41.490 --> 01:34:45.260
Михаил Непряхин: бесконечную, Динамическую, емкость канала издать нельзя

786
01:34:47.930 --> 01:34:52.370
Михаил Непряхин: м-м не буффлизированный канал чу за зверей на фига это надо

787
01:34:52.570 --> 01:34:59.510
Михаил Непряхин: не буффризированный канал интересное Поведение Нет Встречается реже Поэтому на собеседницах мучают больше

788
01:35:00.430 --> 01:35:05.130
Михаил Непряхин: короче он ведет себя не буферзированный канал

789
01:35:05.500 --> 01:35:09.820
Михаил Непряхин: Э позволяет сделать выполнение программы. Синхронной

790
01:35:10.600 --> 01:35:12.940
Михаил Непряхин: то есть иногда

791
01:35:13.070 --> 01:35:19.750
Михаил Непряхин: вы хотите. Все таки из гоу. Сделать синхронную программу даже если вы работаете с горутиной

792
01:35:20.200 --> 01:35:25.240
Михаил Непряхин: вот смотрите какая у, нас здесь ситуация, интересная Создаем Мы гурутину

793
01:35:26.020 --> 01:35:44.280
Михаил Непряхин: ну, читать Кот с грузинами надо как вот Мы таки создали каналы Не пофантазированной Видим Создаем грутину как бы можем сразу считать Что это, запустится, Не сразу это, поставится, в очередь Поэтому пока Не будем читать Что там происходит смотрим дальше

794
01:35:45.660 --> 01:35:47.730
Михаил Непряхин: пишем в канал единицу

795
01:35:48.420 --> 01:35:54.670
Михаил Непряхин: вот здесь вот когда мы записали единицу в канал мы заблокировались

796
01:35:55.190 --> 01:35:58.480
Михаил Непряхин: и ждем пока с другого конца нам никто то не прочитает

797
01:35:58.890 --> 01:36:01.140
Михаил Непряхин: Это именно поведение Непрофессиональный канал

798
01:36:01.470 --> 01:36:04.550
Михаил Непряхин: Хорошо заблокировались значит Смотрим.

799
01:36:04.550 --> 01:36:06.500
Konstantin: Можно вы просим здесь быстро.

800
01:36:06.500 --> 01:36:06.970
Михаил Непряхин: Давайте.

801
01:36:06.970 --> 01:36:11.910
Konstantin: Блокируемся в момент когда мы записали только ли когда мы пытаемся записать второй, Раз, в этот канал.

802
01:36:11.910 --> 01:36:12.860
Михаил Непряхин: Записали

803
01:36:13.270 --> 01:36:18.650
Михаил Непряхин: а да записали вот не здесь а вот именно здесь блокируемся

804
01:36:18.860 --> 01:36:22.490
Михаил Непряхин: блокируемся до тех пор пока не будет прочитано с другой стороны

805
01:36:24.810 --> 01:36:25.500
Михаил Непряхин: а

806
01:36:25.890 --> 01:36:27.170
Михаил Непряхин: если бы

807
01:36:27.340 --> 01:36:29.210
Михаил Непряхин: канал был буффализированный

808
01:36:29.740 --> 01:36:31.890
Михаил Непряхин: вот тремя например значениями

809
01:36:32.260 --> 01:36:40.970
Михаил Непряхин: тогда бы мы здесь не заблокировались тогда мы записали записали записали вывели отправили все три значения закрыли канал

810
01:36:41.580 --> 01:36:45.430
Михаил Непряхин: спим три секунды спин две секунды вот такое было бы поведение

811
01:36:45.850 --> 01:36:51.900
Михаил Непряхин: а здесь не в буфельзировании нет Не так Значит у него Емкость ноль на емкости Нет то есть

812
01:36:52.180 --> 01:36:55.090
Михаил Непряхин: у него нету буфера

813
01:36:55.500 --> 01:37:00.120
Михаил Непряхин: то есть вот здесь мы записали все блокируемся ждем Пока никакого конца не прочитает

814
01:37:00.790 --> 01:37:08.410
Михаил Непряхин: смотрим в грути ничего происходит заска за цикл и читается этот самый, Канал вот здесь когда мы прочитали

815
01:37:09.090 --> 01:37:12.100
Михаил Непряхин: он разблокировался здесь

816
01:37:13.210 --> 01:37:22.660
Михаил Непряхин: и снова записал двойку в канал и ждет. Пока ее опять, прочитают и здесь заблокировался ну ладно вот он значит здесь прочитал разблокировался

817
01:37:23.220 --> 01:37:34.360
Михаил Непряхин: мы записали заблокировались дальше ну вэлью прочитали у канала есть такой же синтаксис как и у мап и

818
01:37:34.980 --> 01:37:36.290
Михаил Непряхин: кастинга. Типов

819
01:37:36.680 --> 01:37:50.890
Михаил Непряхин: то есть вторым аргумент вторым возвращаемым значением приходит бульвар значение оно как вы уже заметили оно называется ок. Опять, же для того чтобы не ок. Выглядело красиво То есть Извлекует паттер но так принято

820
01:37:52.430 --> 01:37:54.110
Михаил Непряхин: и и

821
01:37:54.600 --> 01:37:57.110
Михаил Непряхин: если Не ок значит Канал закрыт

822
01:37:57.470 --> 01:38:04.100
Михаил Непряхин: и мы пишем Что Канал закрытый выходим из Этой гуртины ждет он вот из Этой анонимной функции

823
01:38:04.250 --> 01:38:10.390
Михаил Непряхин: если Же ок Мы прочитали вэлью То Мы просто Пишем что Мы получили вэлью и спим Секунду.

824
01:38:11.340 --> 01:38:12.060
Михаил Непряхин: Эээ

825
01:38:12.510 --> 01:38:17.420
Михаил Непряхин: поспали Секунду. Ну вот Мы здесь в элью получили единицу получили с пем Секунду.

826
01:38:18.210 --> 01:38:26.010
Михаил Непряхин: Дальше Секунду. Отоспали опять читаем из этого канала ну читаем уже двойку вот эту двойку мы прочитали

827
01:38:26.410 --> 01:38:28.500
Михаил Непряхин: как только мы прочитали эту двойку

828
01:38:28.960 --> 01:38:39.220
Михаил Непряхин: вот здесь он сразу разблокировался и записал в канал тройку и все и опять здесь заблокировался и ждет дальше мы опять тут спим и ну вот вы поняли

829
01:38:39.360 --> 01:38:45.210
Михаил Непряхин: вот и вот у нас с поведением получается такое Что пуль членнерку получили двойку тройку

830
01:38:45.570 --> 01:38:48.120
Михаил Непряхин: Отправились назначения Канал закрыт Выходим

831
01:38:49.680 --> 01:38:50.330
Михаил Непряхин: У нас

832
01:38:54.770 --> 01:38:56.080
Михаил Непряхин: Спим Секунду.

833
01:39:04.730 --> 01:39:07.160
Михаил Непряхин: Да нормально ну да секундочку

834
01:39:07.320 --> 01:39:11.250
Михаил Непряхин: вот если, бы был буффализированный канал Давайте тройку сделаем

835
01:39:12.310 --> 01:39:13.320
Михаил Непряхин: ууу

836
01:39:14.230 --> 01:39:18.220
Михаил Непряхин: спим три секунды значит о вернее буфер, три

837
01:39:18.470 --> 01:39:20.570
Михаил Непряхин: как мы ведем себя в этом случае

838
01:39:21.090 --> 01:39:25.500
Михаил Непряхин: ну гурутину Опять пролетели паутину быстро пролетели

839
01:39:26.610 --> 01:39:31.050
Михаил Непряхин: пишем в канал бах бах записали три значения в канал

840
01:39:31.310 --> 01:39:40.010
Михаил Непряхин: гурутина еще не запустилась Причем Мы это сделали очень Быстро а гуртина ничего Не успела запуститься, Мы напечатали Что Мы Отправились От назначения

841
01:39:40.470 --> 01:39:42.620
Михаил Непряхин: Мы закрыли канал

842
01:39:43.790 --> 01:39:45.240
Михаил Непряхин: канал можно закрывать

843
01:39:45.350 --> 01:39:54.840
Михаил Непряхин: значит Как, Раз, закрытие когда мы закрыли канал вот здесь у нас будут после того Как, мы все значения прочитали вернется что канал Закрыт

844
01:39:55.010 --> 01:39:56.340
Михаил Непряхин: То Есть вернется фоукс

845
01:39:57.390 --> 01:39:58.540
Михаил Непряхин: Это и

846
01:39:59.130 --> 01:40:05.950
Михаил Непряхин: и Спим Две Секунды здесь ждем пока отработают бутины и вот Только здесь пока Мы когда Мы Начнем спать

847
01:40:06.510 --> 01:40:10.400
Михаил Непряхин: дойдет очередь наконец-то от Этой гортины запустится свекфор

848
01:40:10.840 --> 01:40:16.580
Михаил Непряхин: и он быстро прочитает все три значения

849
01:40:24.200 --> 01:40:34.450
Михаил Непряхин: ну будет секунду, спать каждый Раз, то есть прочитал значение поспал Секунду. Прочитал поставщик прочитал просто спал короче в чем поменяется Поведение

850
01:40:35.180 --> 01:40:39.800
Михаил Непряхин: вот здесь смотрите получили получили получили а отправили все три

851
01:40:40.760 --> 01:40:42.740
Михаил Непряхин: а Сейчас с буфером будет как

852
01:40:44.710 --> 01:40:45.940
Михаил Непряхин: час каперна

853
01:41:01.530 --> 01:41:05.960
Михаил Непряхин: отправили все три получили Но тут даже не успели

854
01:41:06.200 --> 01:41:09.920
Михаил Непряхин: потому Что две секунды Раньше. Прошло лет три надо секунды спать

855
01:41:12.710 --> 01:41:17.300
Михаил Непряхин: вот Поведение, довольно сильно отличается

856
01:41:19.520 --> 01:41:31.090
Михаил Непряхин: то Есть как я Говорю вот здесь У нас получается, синхронный такой Кот мы бах бах туда сюда Прыгаем, Прыгаем, Отправились от развлечения канал закрыт выходим а здесь сразу Отправились три значения

857
01:41:31.840 --> 01:41:35.860
Михаил Непряхин: и дальше уже и

858
01:41:37.020 --> 01:41:40.830
Михаил Непряхин: в Этой грутине, одной Перебираем эти значения

859
01:41:41.770 --> 01:41:56.490
Михаил Непряхин: с буффализированным вот этим каналом работать Проще потому что, он ну как бы, ну Проще Читается Кот вот вы бахмах бах вот это все прочитали в канал записали и дальше он там постепенно их вычитывает

860
01:41:56.760 --> 01:42:01.090
Михаил Непряхин: и чаще всего вот с буффрезированным к нам, работают а

861
01:42:01.300 --> 01:42:16.940
Михаил Непряхин: и Не, буфализированный бывает но супер редко но иногда все-таки нужен вот иногда вы хоть, Не, хотите, чтобы У вас оно вот так вот прыгало для какой-то синхронизации Или вы Хотите, чтобы очередность какая-то была по предсказуемом какую-то вы хотите, таммойку сделать

862
01:42:17.170 --> 01:42:23.110
Михаил Непряхин: вот Поэтому важно понимать вот и Так как они работают

863
01:42:23.340 --> 01:42:25.310
Михаил Непряхин: любовь из буферана Без буфера

864
01:42:26.220 --> 01:42:32.080
Михаил Непряхин: Так то есть после закрытия канала из него можно читать Но не затопить в него, да верно

865
01:42:32.260 --> 01:42:33.870
Михаил Непряхин: в закрытый канаву

866
01:42:33.970 --> 01:42:47.020
Михаил Непряхин: писать нельзя вот паника а читать Можно читать Можно здесь бод если вдруг кончилось то здесь было зеркалью а здесь бот фолкс что, мы закончили Пока здесь трум

867
01:42:47.320 --> 01:42:48.790
Михаил Непряхин: здесь будет значение

868
01:42:49.070 --> 01:42:53.110
Михаил Непряхин: как только значения кончились здесь бот фоукс здесь базировали

869
01:42:58.370 --> 01:43:01.300
Михаил Непряхин: так Объясните пожалуйста, еще Раз для чего нужны каналы

870
01:43:01.940 --> 01:43:10.020
Михаил Непряхин: аа для взаимодействия между двумя гурутинами вот у нас есть грутина мэйн, эта бурутина и есть еще одна грутина

871
01:43:10.610 --> 01:43:14.640
Михаил Непряхин: и Мы хотим, из этой Грутины Мэйн

872
01:43:14.980 --> 01:43:19.960
Михаил Непряхин: передать во внутрь другой груди на какие То данные

873
01:43:21.490 --> 01:43:29.760
Михаил Непряхин: а и чтобы не было ничего потеряно чтобы был порядок определенный То еще была очередь очередной

874
01:43:30.250 --> 01:43:33.240
Михаил Непряхин: а Мы используем каналы для того чтобы

875
01:43:33.400 --> 01:43:47.840
Михаил Непряхин: Шарить данные и

876
01:43:48.150 --> 01:43:50.100
Михаил Непряхин: и это

877
01:43:50.250 --> 01:43:55.890
Михаил Непряхин: как бы другая программа так-то если че то есть ну как бы мы Же, так об этом Думаем Вот есть нас

878
01:43:56.040 --> 01:44:05.190
Михаил Непряхин: программа программа и мы Из Этой программы. Запустили сопрограмму другую программу Гриндред

879
01:44:05.600 --> 01:44:06.580
Михаил Непряхин: и и

880
01:44:06.750 --> 01:44:20.950
Михаил Непряхин: это другая Программа, надо Же как-то с ней взаимодействовать вот очень удобно это делать. С помощью каналов то есть можно в другую грутину послать какие то данные можно послать сигнал чтобы она закрылась

881
01:44:20.970 --> 01:44:36.680
Михаил Непряхин: допустим Мы тут уже все умерли все поняли что уже воевать нет смысла все хана надо закрываться а у нас Там запущено десять тысяч грузин Мы можем просто вот так вот подать сигнал закрыли канал это есть сигнальные каналы

882
01:44:36.950 --> 01:44:43.760
Михаил Непряхин: и все десять тысяч. Грутин это увидели ага канал закрыт сворачиваемся братцы закрываемся

883
01:44:44.360 --> 01:44:51.710
Михаил Непряхин: то есть это как бы и метод коммуникации и метод Послания сигналов

884
01:44:53.910 --> 01:44:56.770
Михаил Непряхин: так по идее только сендер должен закрывать Канал

885
01:44:57.260 --> 01:45:00.090
Михаил Непряхин: да только сендер может закрывать Канал верно

886
01:45:01.120 --> 01:45:03.770
Михаил Непряхин: расивер не должен его закрывать только читать

887
01:45:05.130 --> 01:45:08.350
Михаил Непряхин: да верно Россию вы не можете закрывать если он закроет

888
01:45:08.840 --> 01:45:18.720
Михаил Непряхин: то может возникнуть ситуация, что, тот кто посылает будет пошлет еще одна и будет паника Программа, умрет

889
01:45:19.070 --> 01:45:20.870
Михаил Непряхин: бот паника на уровне программы

890
01:45:21.750 --> 01:45:23.480
Михаил Непряхин: это факт то это правильно

891
01:45:24.610 --> 01:45:25.270
Михаил Непряхин: так

892
01:45:26.190 --> 01:45:27.820
Михаил Непряхин: а

893
01:45:27.940 --> 01:45:31.590
Михаил Непряхин: так Сейчас кана мы добьемся таки тут как бы такая тема

894
01:45:33.680 --> 01:45:34.410
Михаил Непряхин: а

895
01:45:35.030 --> 01:45:37.030
Михаил Непряхин: закрытие закрытия канала

896
01:45:37.810 --> 01:45:41.950
Михаил Непряхин: смотрите создаем Канал с буфером Один,

897
01:45:42.390 --> 01:45:44.120
Михаил Непряхин: посылаем в него

898
01:45:44.390 --> 01:45:45.160
Михаил Непряхин: число

899
01:45:45.640 --> 01:45:47.060
Михаил Непряхин: и закрываем

900
01:45:48.910 --> 01:45:50.200
Михаил Непряхин: изыгрываем канал

901
01:45:51.080 --> 01:45:57.170
Михаил Непряхин: что это значит ну это значит что из канала можно прочитать все что в него Было записано

902
01:45:57.980 --> 01:46:05.520
Михаил Непряхин: но как бы на этом все в него, уже нельзя писать после закрытия Мы его закрыли писать его нельзя читать за него, Можно

903
01:46:05.650 --> 01:46:07.700
Михаил Непряхин: что Мы делаем Мы читаем из Него

904
01:46:08.070 --> 01:46:09.740
Михаил Непряхин: а вэлью

905
01:46:09.880 --> 01:46:13.750
Михаил Непряхин: у нас будет ну собственно сорок Два мы его получим

906
01:46:14.430 --> 01:46:19.970
Михаил Непряхин: а ок, мы проверим ну Он будет тру потому что Мы еще открыты

907
01:46:20.780 --> 01:46:26.680
Михаил Непряхин: а дальше Мы будем! Получать зеро илью а здесь фоукс зеровелью фолс

908
01:46:27.740 --> 01:46:28.860
Михаил Непряхин: и

909
01:46:29.190 --> 01:46:31.080
Михаил Непряхин: да давайте запустим

910
01:46:32.530 --> 01:46:34.600
Михаил Непряхин: прочитали вэлью

911
01:46:34.820 --> 01:46:39.280
Михаил Непряхин: проверяем канал открыт да открыт ну тут, надо

912
01:46:41.180 --> 01:46:43.630
Михаил Непряхин: только не искусство а из-за опыта

913
01:46:48.880 --> 01:46:52.460
Михаил Непряхин: вот типа он открыт да открыт

914
01:46:53.000 --> 01:46:54.720
Михаил Непряхин: когда он был закрыт

915
01:46:55.070 --> 01:46:56.810
Михаил Непряхин: мы будем, получать зеркале

916
01:46:57.250 --> 01:47:00.830
Михаил Непряхин: вот Поэтому как бы у нас вот есть, способ. Проверить закрытка на или нет

917
01:47:01.330 --> 01:47:03.970
Михаил Непряхин: что будет если мы закроем закрытый канал

918
01:47:04.620 --> 01:47:06.700
Михаил Непряхин: будет паника так делать нельзя

919
01:47:07.090 --> 01:47:11.360
Михаил Непряхин: будет паника значит ну закрываем закрытый канал

920
01:47:11.850 --> 01:47:13.800
Михаил Непряхин: спасибо написали разборчиво

921
01:47:15.440 --> 01:47:19.060
Михаил Непряхин: если мы будем писать закрытый канал тоже будет паника

922
01:47:19.360 --> 01:47:21.130
Михаил Непряхин: отправка закрытый Канал

923
01:47:23.020 --> 01:47:27.100
Михаил Непряхин: вот это Можно понимать закрытый Канал нельзя закрывать

924
01:47:27.260 --> 01:47:29.580
Михаил Непряхин: и нельзя в Него писать читать Можно

925
01:47:35.570 --> 01:47:37.550
Михаил Непряхин: я и

926
01:47:37.720 --> 01:47:38.830
Михаил Непряхин: дальше

927
01:47:39.100 --> 01:47:41.310
Михаил Непряхин: есть Конструкция селект

928
01:47:42.240 --> 01:47:47.100
Михаил Непряхин: представим что Мы Работаем с пачкой каналов с тремя каналами Работаем

929
01:47:47.250 --> 01:47:49.070
Михаил Непряхин: что То Записали внизу всех

930
01:47:50.140 --> 01:47:50.810
Михаил Непряхин: эээ

931
01:47:51.560 --> 01:47:52.640
Михаил Непряхин: есть

932
01:47:52.840 --> 01:47:56.960
Михаил Непряхин: конструкция Селект Похожа на свич с кейсами

933
01:47:58.350 --> 01:48:02.560
Михаил Непряхин: Э канал может Там закрыться Нет канал Не, может нам закрыться

934
01:48:02.910 --> 01:48:04.560
Михаил Непряхин: только Мы можем руками закрыть

935
01:48:08.000 --> 01:48:18.820
Михаил Непряхин: кейсы как свече но Внутри вот здесь вот должны быть операции, чтения либо, записи в канал либо, мы читаем из кононоват как здесь

936
01:48:18.960 --> 01:48:20.420
Михаил Непряхин: либо, мы пишем канал

937
01:48:20.650 --> 01:48:22.330
Михаил Непряхин: пишем канал можно это писать

938
01:48:23.090 --> 01:48:25.590
Михаил Непряхин: вот то есть Одно, из двух либо, пишем либо, читаем

939
01:48:26.400 --> 01:48:27.720
Михаил Непряхин: и и

940
01:48:28.000 --> 01:48:29.450
Михаил Непряхин: есть ли у нас

941
01:48:29.570 --> 01:48:33.790
Михаил Непряхин: Никакие каналы Не готовы на Чтение, или запись

942
01:48:34.110 --> 01:48:47.310
Михаил Непряхин: ну Мы в этом селекте заблокируемся и будем ждать, Пока какой-нибудь Канал Не разблокируется на Чтение, либо на запись. Ну в нашем случае. Мы все читаем то Есть надо чтобы хоть, кто-то был недоступен на чтение

943
01:48:48.320 --> 01:48:49.680
Михаил Непряхин: и и

944
01:48:49.900 --> 01:48:53.180
Михаил Непряхин: Есть для этого случая дефолт

945
01:48:53.510 --> 01:48:57.340
Михаил Непряхин: то Есть вот в этом случае если. Все заблокировано Ну выйдем по дефолту

946
01:48:59.060 --> 01:48:59.780
Михаил Непряхин: а и

947
01:49:00.310 --> 01:49:03.160
Михаил Непряхин: если. Мы

948
01:49:03.450 --> 01:49:08.360
Михаил Непряхин: имеем Готовыми. Все каналы вот Они все готовы на чтение

949
01:49:08.580 --> 01:49:11.200
Михаил Непряхин: Прочитается в случайном Порядке

950
01:49:11.360 --> 01:49:17.640
Михаил Непряхин: прочитать случайно из кейсов ну Еще когда Мы имеем дело с грузинами и с каналами тут случайность везде

951
01:49:18.040 --> 01:49:23.260
Михаил Непряхин: в этом у нас нет заранее Определенного поведения что свобода

952
01:49:24.080 --> 01:49:25.110
Михаил Непряхин: это и

953
01:49:26.330 --> 01:49:31.670
Михаил Непряхин: м дефолт дефолт показал допустим у нас два канала есть

954
01:49:32.010 --> 01:49:34.720
Михаил Непряхин: Мы из них из обоих читаем

955
01:49:35.380 --> 01:49:38.820
Михаил Непряхин: Но они в них ничего Нет а Не, пустые

956
01:49:39.630 --> 01:49:41.710
Михаил Непряхин: ити кейсы никогда Не, сработают

957
01:49:41.850 --> 01:49:46.250
Михаил Непряхин: Но Ездить дефолт Мы просто выйдем из селекта по дефолту

958
01:49:47.100 --> 01:49:51.410
Михаил Непряхин: и вообще когда У вас есть какая-то еще инструкция принято ее писать Не вот здесь

959
01:49:51.710 --> 01:49:55.750
Михаил Непряхин: а вот здесь когда вы уже вышли из

960
01:49:55.960 --> 01:50:04.850
Михаил Непряхин: вот здесь когда вы уже вышли из селекта то есть селек надо оставлять маленьким, и компактным чтобы вот он читал все вот так вот попроще

961
01:50:05.070 --> 01:50:11.590
Михаил Непряхин: уж здесь дефолтный вариант может быть большая. Какая-то инструкция Неудобно читать ведь то же самое будет если вы Не пишете просто здесь

962
01:50:13.870 --> 01:50:14.680
Михаил Непряхин: да

963
01:50:19.660 --> 01:50:21.530
Михаил Непряхин: да то же самое то что сказал

964
01:50:22.680 --> 01:50:26.230
Михаил Непряхин: так. Ну чего мне здесь Например вот у меня Канал

965
01:50:26.390 --> 01:50:29.100
Михаил Непряхин: с Задачами с буфером Десять.

966
01:50:29.240 --> 01:50:31.480
Михаил Непряхин: И сигнальный Канал

967
01:50:31.820 --> 01:50:36.240
Михаил Непряхин: сигнальника нам обычно используют просто его закрывают делают голос

968
01:50:36.460 --> 01:50:39.950
Михаил Непряхин: и когда канал закрыт то тоже кейс срабатывает

969
01:50:40.690 --> 01:50:44.160
Михаил Непряхин: то есть вот видим этот стоп читаем в пустоту,

970
01:50:44.550 --> 01:50:46.320
Михаил Непряхин: если Мы сделаем вот Так вот

971
01:50:47.400 --> 01:50:48.520
Михаил Непряхин: Клоуз

972
01:50:49.230 --> 01:50:50.150
Михаил Непряхин: стоп

973
01:50:50.760 --> 01:50:59.490
Михаил Непряхин: то вот этот канал сразу Будет доступен на чтение и оно просто этот кейс Сразу сработает видите мы в этом случае просто Отсюда Выйдем из этого селека

974
01:51:00.140 --> 01:51:05.260
Михаил Непряхин: Если мы со ступом ничего не делаем Как здесь

975
01:51:05.430 --> 01:51:13.170
Михаил Непряхин: Срабатывает дефолтный кейс в дворном кейсе Мы пишем сорок Два паски то есть тоже пишем в канале

976
01:51:14.280 --> 01:51:20.280
Михаил Непряхин: этого Стоит избегать потому, что вот это вот то же самое что вот Это вот

977
01:51:20.730 --> 01:51:35.560
Михаил Непряхин: и когда вы будете читать вот в этом месте ой писать вот в этом месте в тоске если в Тасках Не будет места если. Будет весь буфер занят то Мы здесь заблокируемся до тех Пор пока Не освободится место в Тасках

978
01:51:36.700 --> 01:51:38.100
Михаил Непряхин: и

979
01:51:39.260 --> 01:51:44.320
Михаил Непряхин: несмотря на то что Мы как бы тут тоже в селекте и вот если, Мы здесь заблокируемся

980
01:51:44.900 --> 01:51:47.120
Михаил Непряхин: Мы вот здесь уже

981
01:51:47.280 --> 01:51:50.260
Михаил Непряхин: не разблокируемся если, вдруг Стоп бон закрыт

982
01:51:50.370 --> 01:52:01.110
Михаил Непряхин: потому что мы Блокируемся не на кейсе а Блокируемся Внутри кейса а здесь уже блокировки они не срабатывают на весь кейс То есть важно понимать что когда вы видите селект

983
01:52:01.590 --> 01:52:05.040
Михаил Непряхин: вы рассматриваете только кейсы

984
01:52:05.250 --> 01:52:06.950
Михаил Непряхин: на

985
01:52:07.180 --> 01:52:20.010
Михаил Непряхин: Предмет как бы ну вот разрешение Вдруг Там можно записать или можно прочитать но Это только в Кейсах он работает а Это То Же самое что Ну вы Это делаете после Селектов.

986
01:52:21.800 --> 01:52:23.800
Михаил Непряхин: Так значит популярные ошибки

987
01:52:24.300 --> 01:52:25.180
Михаил Непряхин: ну

988
01:52:25.440 --> 01:52:29.900
Михаил Непряхин: если Мы работаем с инициативой Не инициативным каналом Мы получаем

989
01:52:30.190 --> 01:52:35.070
Михаил Непряхин: панику ну а тут называется фотоамаро ну по сути та же самая паника Дидлог

990
01:52:35.530 --> 01:52:46.640
Михаил Непряхин: значит часто еще любят мучить, на собеседницах типа что будет панику или взять Влог типа вот они Дедлог отличают немного от паники что паника это дедлог это не паника это фаталарор

991
01:52:46.710 --> 01:52:57.040
Михаил Непряхин: дедлог ну. В общем дедлог это Ситуация, когда мы вот смотрите сделали канал пытаемся в Него записать а получаем этот блог потому Что не можем это сделать

992
01:52:57.900 --> 01:53:03.620
Михаил Непряхин: то. Же самое значит создали создали уже инициализированный канал

993
01:53:03.920 --> 01:53:05.720
Михаил Непряхин: ну. Кстати точно тут за другой Год

994
01:53:06.690 --> 01:53:11.440
Михаил Непряхин: да-да-да дылок типа все грутины спят Дай Бог

995
01:53:11.980 --> 01:53:12.990
Михаил Непряхин: ууу

996
01:53:13.560 --> 01:53:15.350
Михаил Непряхин: я бы здесь просто панику сделал

997
01:53:16.450 --> 01:53:19.610
Михаил Непряхин: на них вместе короче создали и буферзированный Канал

998
01:53:20.000 --> 01:53:21.630
Михаил Непряхин: записали в Него

999
01:53:22.080 --> 01:53:26.870
Михаил Непряхин: одно, значение тут же пытаемся Писать Второе но из Него никто не читает

1000
01:53:27.110 --> 01:53:28.330
Михаил Непряхин: борнмутвок

1001
01:53:30.150 --> 01:53:31.350
Михаил Непряхин: А это

1002
01:53:31.630 --> 01:53:39.730
Михаил Непряхин: Если вдруг мы создали Канал и сразу же из Него, читаем А в него, еще никто не успел, Записать тоже делок

1003
01:53:39.890 --> 01:53:46.950
Михаил Непряхин: то есть вот тут как бы Должна быть запущена Грутина которая будет в него писать чтобы Мы смогли прочитать чтобы не обдает Руку

1004
01:53:50.050 --> 01:53:51.680
Михаил Непряхин: а фотоможны рукаврит

1005
01:53:51.890 --> 01:53:55.020
Михаил Непряхин: Думаю что нет Мне кажется, надо проверить

1006
01:53:55.200 --> 01:53:59.640
Михаил Непряхин: можно ли река играть фото мой интересный вопрос Никогда Не сдавался

1007
01:54:00.490 --> 01:54:01.750
Михаил Непряхин: надо попробовать

1008
01:54:02.730 --> 01:54:09.600
Михаил Непряхин: и тогда вот понятно Афта аврора это все-таки паника или не паника ну просто, вот наверное страже что называется не паника

1009
01:54:09.980 --> 01:54:13.930
Михаил Непряхин: как будто бы программа просто, кончится с концами и все типа ничего нельзя Творить

1010
01:54:14.050 --> 01:54:16.300
Михаил Непряхин: видимо такая логика была от аврора

1011
01:54:26.910 --> 01:54:28.770
Михаил Непряхин: потому что это не паника вроде как

1012
01:54:29.600 --> 01:54:32.000
Михаил Непряхин: так ну закрытие закрытого канала

1013
01:54:32.240 --> 01:54:37.730
Михаил Непряхин: но Тут же паника ну да я Думаю что все-таки фотомор нельзя Ловить но панику можно быть

1014
01:54:38.270 --> 01:54:47.280
Михаил Непряхин: на что Мы закрываем закрытый Канал так Мы пишем закрытый канал но уже видели да читайте закрытого канала ок.

1015
01:54:47.500 --> 01:54:53.270
Михаил Непряхин: Просто читаем получаем значение если Мы только; вот одно, значение читаем

1016
01:54:53.700 --> 01:54:55.860
Михаил Непряхин: а ну просто будет зеркало Людей все

1017
01:54:57.880 --> 01:55:09.630
Михаил Непряхин: можем из закрытого канала когда канал закрыт можем по нему иерироваться но как бы из могу сказать что по каналу мы еще можем интегрироваться в циклифор это правом суперудобно

1018
01:55:09.870 --> 01:55:17.000
Михаил Непряхин: аа Ну, это собственно говоря мы просто читаем и сказал все то же самое Еще Чтение а читать закрытый канал Можно и Поэтому здесьрок

1019
01:55:17.940 --> 01:55:26.640
Михаил Непряхин: и селект закрытого канала тоже ок потому что как только у нас канал Закрыт А кейс директор сразу срабатывает

1020
01:55:27.030 --> 01:55:29.140
Михаил Непряхин: Поэтому здесь тоже. Все Нормально

1021
01:55:30.380 --> 01:55:31.090
Михаил Непряхин: А и

1022
01:55:31.260 --> 01:55:38.050
Михаил Непряхин: по-моему Кстати. В селекте можно и неловые каналы тоже. Использовать но просто это совсем какой-то сумасшедший странный кейс чем-то надо

1023
01:55:40.410 --> 01:55:41.430
Михаил Непряхин: цак

1024
01:55:42.430 --> 01:55:48.280
Михаил Непряхин: это Мы вольер в следующий Раз посмотрим с таймерами Тоже. И с Патронами бурутин

1025
01:55:48.560 --> 01:55:52.780
Михаил Непряхин: тоже в следующий Раз, посмотрим потому Что и Так Сейчас уже Перегруз,

1026
01:55:55.170 --> 01:55:56.110
Михаил Непряхин: Так

1027
01:55:57.160 --> 01:56:00.140
Михаил Непряхин: по ошибкам нужно отличать буфера тнв хачана

1028
01:56:00.350 --> 01:56:02.480
Михаил Непряхин: Нет

1029
01:56:02.920 --> 01:56:07.410
Михаил Непряхин: Нет можно Не ну. Они одинаковы будут

1030
01:56:08.240 --> 01:56:13.370
Михаил Непряхин: что сбуферазированный канал что не буффризированным это по-моему ошибки будут те же самые.

1031
01:56:13.720 --> 01:56:16.640
Михаил Непряхин: Ну. Можете проверить Мне тут везде он бухар один стоит

1032
01:56:17.130 --> 01:56:20.190
Михаил Непряхин: можете проверить то же самое. С буфером ноль

1033
01:56:24.450 --> 01:56:31.740
Михаил Непряхин: так, есть ли еще тут Вопросы, насколько это вообще сложно насколько вы что То Поняли

1034
01:56:32.230 --> 01:56:39.330
Михаил Непряхин: Есть Каналы только На Чтение Нет А ну Есть Есть да Обман вы Есть

1035
01:56:39.630 --> 01:56:46.740
Михаил Непряхин: когда Мы можем типизировать короче говоря вот когда вы используете функции в следующий Раз, посмотрим

1036
01:56:46.890 --> 01:56:53.250
Михаил Непряхин: есть ли стрелка справа отчанова он будет типизирован только на запись

1037
01:56:53.650 --> 01:56:56.300
Михаил Непряхин: и вы Не сможете ээ из Него читать

1038
01:56:56.690 --> 01:57:11.850
Михаил Непряхин: а если Он типизирован вот так вот стрелкой то Он доступен только на Чтение и вы Не сможете в Него Писать типизировать каналы Можно Но только на уровне функции только когда вот вы функцию передали его куда-то внутрь

1039
01:57:12.130 --> 01:57:14.990
Михаил Непряхин: то есть вот здесь мы его создали здесь Мы типировать Не можем

1040
01:57:15.100 --> 01:57:17.040
Михаил Непряхин: а вот когда вы его куда-то передали

1041
01:57:17.200 --> 01:57:23.640
Михаил Непряхин: Там Мы можем выпротизировать и сказать что вот Он только на Чтение, Или только на запись защиты ну рукавом да это защита на руках

1042
01:57:26.250 --> 01:57:38.010
Михаил Непряхин: да Именно Так просто защита Дурака ну и в Принципе себе, Тоже, удобно вы смотрите себе, натуру Что ага ченнал ченнал и строг я тут получаю в аргументе

1043
01:57:38.580 --> 01:57:42.500
Михаил Непряхин: справа Стрелка Значит только могу писать в Него

1044
01:57:42.720 --> 01:57:48.560
Михаил Непряхин: читать Из него Не могу все я в него пишу Но значит та сторона будет читать в Принципе удона

1045
01:57:56.600 --> 01:58:00.530
Михаил Непряхин: ну смотрите Можно Давать эту тему, вообще когда нибудь потом

1046
01:58:00.870 --> 01:58:11.490
Михаил Непряхин: но как будто бы все равно Мы когда Там будем рассматривать Эти все сервера и прочее Там все равно кто там То тут, будет как бы про эта речь заходить

1047
01:58:11.600 --> 01:58:15.340
Михаил Непряхин: и тут, так хоть чуть-чуть примерно важно понимать

1048
01:58:15.790 --> 01:58:22.010
Михаил Непряхин: что но на самом деле вот больше ничего нет да вот как бы селекты вы группы

1049
01:58:22.640 --> 01:58:24.360
Михаил Непряхин: мютакса атомики

1050
01:58:24.900 --> 01:58:37.010
Михаил Непряхин: все это вот это вот наши рабочие инструменты Там любые паттерны все что Мы возьмем вот Там Какой нибудь типовой паттерн Там воркер пул. Возьмем что здесь используется воет группа

1051
01:58:37.480 --> 01:58:40.520
Михаил Непряхин: и группа грутина

1052
01:58:40.730 --> 01:58:42.650
Михаил Непряхин: каналы

1053
01:58:42.920 --> 01:58:46.840
Михаил Непряхин: вот а канал у нас с буфером двадцать вот то есть это прямо вот

1054
01:58:47.620 --> 01:58:59.790
Михаил Непряхин: и все в работе все что нужно это комбинация и

1055
01:58:59.910 --> 01:59:07.470
Михаил Непряхин: позволяют вот Ну абсолютно все Что вам в Голову. Взбредет Любая паторная реализовать

1056
01:59:11.220 --> 01:59:20.980
Михаил Непряхин: Так каналы Тонкие указатели. Да каналы это просто указатель Ну тонкий указатель Можно сказать можно просто указать просто указатель восемь бай

1057
01:59:21.690 --> 01:59:37.730
Михаил Непряхин: То есть на стекке это указатель указывает он в кучу а в кучу это уже ну, такая мунструозная большая структура каналы Даже не будет я Там ссылки Скинул посмотрите Немножечко может Там хотя бы один видосик по внутреннему устройству каналов

1058
01:59:37.730 --> 01:59:46.930
Михаил Непряхин: это прям тут в общем Никогда не спрашивают и Там минимально надо понимать что Там есть мюток что это кольцевая очередь как бы на этом все

1059
01:59:47.090 --> 02:00:01.400
Михаил Непряхин: и здесь не задал бы как с мапами или с лайсами Поэтому этот смысл не вижу прямо бороться разбираться с Этим ну и я Не То что будет Сильно в Этом разбираюсь. И

1060
02:00:02.140 --> 02:00:09.050
Михаил Непряхин: Так насколько я помню проник Можно перехватить, Баню Можно перехватить, афота аврора вызывает сразу соответственно будто, скорее всего да

1061
02:00:09.590 --> 02:00:17.200
Михаил Непряхин: ну вот я тоже вот я тоже здесь как бы плаваю но как будто, бы неспроста они сделали, эту разницу панику-то точно можно отвалить да

1062
02:00:17.830 --> 02:00:25.140
Михаил Непряхин: вата фатау видимо Это все уэсексит ваннуса ну Или Там с каким, То кодом ну с каким, вот онконом Он выходит

1063
02:00:25.320 --> 02:00:27.580
Михаил Непряхин: там же должен быть куда-нибудь кондовать пример

1064
02:00:28.960 --> 02:00:30.630
Михаил Непряхин: Э Фаттау

1065
02:00:31.340 --> 02:00:33.280
Михаил Непряхин: Два витя, Кот Два

1066
02:00:33.460 --> 02:00:40.630
Михаил Непряхин: да скорее всего там просто Программа закрывается и все ну хотя с тектовым тоска разматывается. Немножко. Стек

1067
02:00:40.860 --> 02:00:43.880
Михаил Непряхин: ну Наверное да Фотографы нельзя отводить

1068
02:00:44.800 --> 02:00:49.940
Михаил Непряхин: ээ так короче смерти самое главное самое главное самое базовое

1069
02:00:50.070 --> 02:00:54.910
Михаил Непряхин: вот там вот про эти каналы как бы ну будете работать

1070
02:00:55.360 --> 02:00:57.480
Михаил Непряхин: разберетесь потому, что

1071
02:00:57.480 --> 02:01:16.870
Михаил Непряхин: там вот и

1072
02:01:16.870 --> 02:01:25.050
Михаил Непряхин: и вы там научитесь их решать и

1073
02:01:25.120 --> 02:01:29.460
Михаил Непряхин: с ним буфером вообще никто не работает а вот Поэтому и Мучительно. Совбеза

1074
02:01:29.580 --> 02:01:39.610
Михаил Непряхин: для того Чтобы как бы ну проверить еще типа знаете в это или нет но вот прям вот самое главное и это вот понимать с гонками данных

1075
02:01:39.950 --> 02:01:55.940
Михаил Непряхин: вот как она возникает что это такое а если, Нету параллельности если, Мы в одном потоке Одновременно только работаем будет ли Она нет не будет вот вот прямо вот это вот критично важно понимать те же самые мютаксы да как бы тоже важно что

1076
02:01:55.980 --> 02:02:00.500
Михаил Непряхин: как бы вот мы там будем тоже смотреть с блокировками как Не переборщить

1077
02:02:00.690 --> 02:02:08.410
Михаил Непряхин: что сделали вы Десять, тысяч. Э горотин но они там упираются рон Ютекс

1078
02:02:08.570 --> 02:02:20.840
Михаил Непряхин: но это будет медленно сто процентов, то есть как бы это не будет тут большой скорости то есть эммм Ну тут конечно это абстрактный Например десять тысяч Грузин Просто инкриминировать щечек Обычно как бы это

1079
02:02:21.090 --> 02:02:24.300
Михаил Непряхин: не так все таки бывает и Всегда можно

1080
02:02:24.550 --> 02:02:42.440
Михаил Непряхин: просто создать внутренний в гору тине внутренний счетчик Или там цикл, он оттарабанивает и хотя бы не каждую и

1081
02:02:42.740 --> 02:02:55.980
Михаил Непряхин: и есть группы и

1082
02:02:56.920 --> 02:03:04.550
Михаил Непряхин: там можно обойтись Без военной группы иногда но почти Всегда, Своими группами Гораздо приятнее работать и Предсказуемы

1083
02:03:04.890 --> 02:03:11.400
Михаил Непряхин: вот Есть еще у Луна ролик Там. Он рассказывает про

1084
02:03:11.770 --> 02:03:16.670
Михаил Непряхин: паттерные с Каналами ну с Грузинами с Каналами

1085
02:03:18.270 --> 02:03:31.580
Михаил Непряхин: и вот Он прямо, вреднючий потому что так никто Не работает и эти паттерны и

1086
02:03:32.130 --> 02:03:35.580
Михаил Непряхин: какой-то умозрительный эксперимент что так можно Делать

1087
02:03:35.850 --> 02:03:43.260
Михаил Непряхин: по факту используется вот воркерпул какой-то классический просто там поднимается десятьеркеров

1088
02:03:43.430 --> 02:03:59.730
Михаил Непряхин: и они просто там перемалывают Что, что-то там делают и как бы на этом обычно все и заканчиваться а какие-то чуть Сложнее этого паттерные это уже на уровне библиотек и вы их даже никогда не увидите и не будете с ними работать

1089
02:04:00.090 --> 02:04:04.750
Михаил Непряхин: Поэтому тут важно не мудрить

1090
02:04:04.830 --> 02:04:23.050
Михаил Непряхин: не Делать каких-то и

1091
02:04:23.090 --> 02:04:25.790
Михаил Непряхин: Гурутинами и Каналами

1092
02:04:26.210 --> 02:04:36.680
Михаил Непряхин: это это сразу все будут усложнять Поэтому важно Критически важно Научиться не с обертками работать потому что. Есть например

1093
02:04:38.210 --> 02:04:41.170
Михаил Непряхин: понт короче Есть библиотеки

1094
02:04:41.480 --> 02:04:50.490
Михаил Непряхин: Которые за вас Делают, в опу У воркеров и за вас Могут сделать какую нибудь Оберточку вот над этими гурутинами

1095
02:04:50.950 --> 02:04:55.540
Михаил Непряхин: но, они вредны в том. Плане что вы привыкаете

1096
02:04:55.740 --> 02:05:19.030
Михаил Непряхин: Не думать, своей головой а как бы Перекладывать ответственность на автора библиотеки а он сам не особо и

1097
02:05:19.270 --> 02:05:26.940
Михаил Непряхин: ну много по крайней мере не работал, и он там вот придумывал вот эти паттерны что а вот можно Так в жизни это никто Не использует

1098
02:05:27.270 --> 02:05:32.110
Михаил Непряхин: и Поэтому Важно просто вот минимально научиться

1099
02:05:32.810 --> 02:05:46.200
Михаил Непряхин: и как минимум написать счетчик, с нуля и

1100
02:05:46.350 --> 02:05:49.100
Михаил Непряхин: вот вот вот эту Реализацию

1101
02:05:49.250 --> 02:05:53.380
Михаил Непряхин: То, же самое вот ээ вот вот с этими штуками вот надо вам

1102
02:05:54.000 --> 02:06:08.450
Михаил Непряхин: какие это сделать три долгие операции вот прям напишите Их с нуля не подглядывая а потом он посмотрите и тоже без помощи чата репетиций а вот просто попробуйте написать и вы вот с этими вот Своими группами чуть лучше разберетесь

1103
02:06:08.500 --> 02:06:15.370
Михаил Непряхин: потому, что вот здесь вообще проблема не должно быть вот это вот прямо надо хорошо знать опять. Же для работы

1104
02:06:15.800 --> 02:06:31.550
Михаил Непряхин: и и

1105
02:06:31.650 --> 02:06:38.790
Михаил Непряхин: вот я здесь просто как бы только на опыте это выезжаете но вот на Военгруппы есть задачи на собесах

1106
02:06:39.020 --> 02:06:42.250
Михаил Непряхин: и грубо говоря там аа

1107
02:06:42.400 --> 02:06:53.040
Михаил Непряхин: если это медловое такое мидл плюс с небес то это две задачки обычно бывают Там один, одна зачка на свадьбе одна вот на эту тему, Гурутиновые группы

1108
02:06:53.500 --> 02:06:54.880
Михаил Непряхин: и даже без каналов

1109
02:06:55.040 --> 02:07:03.180
Михаил Непряхин: вот а бывает еще третий уровень дополнительный еще с каналами Это вот комбинация гурутины вы группы Мюток с канала

1110
02:07:03.180 --> 02:07:20.360
Михаил Непряхин: вот Это самое сложное может быть и

1111
02:07:20.600 --> 02:07:22.950
Михаил Непряхин: вот и Это Собственно Все

1112
02:07:23.210 --> 02:07:25.970
Михаил Непряхин: То есть Все Все вот это

1113
02:07:26.210 --> 02:07:33.200
Михаил Непряхин: ну селект Еще и

1114
02:07:33.370 --> 02:07:50.750
Михаил Непряхин: Там люди валятся просто на том вопросе что в каком Порядке сработают, кейсы если. Они все готовы то как у нас запомнишь в случайном порядке а если. Они все Не готовы ну ничего заблокируемся а если. Есть дефолт ну выйдем по дефолту если. Все заблокировано как бы вот и все весь функционал

1115
02:07:53.160 --> 02:07:54.230
Михаил Непряхин: так

1116
02:07:57.210 --> 02:08:00.400
Михаил Непряхин: ну хорошо же вопрос поднялся кстати очень странно конечно

1117
02:08:01.280 --> 02:08:04.130
Михаил Непряхин: может У меня соседи на роутере висят я уже не знаю

1118
02:08:04.550 --> 02:08:07.570
Михаил Непряхин: как: вчера через, десять, пятнадцать минут со стартовая красавица

1119
02:08:07.860 --> 02:08:08.750
Михаил Непряхин: фиги

1120
02:08:09.730 --> 02:08:13.270
Михаил Непряхин: так давайте еще самые глупые Вопросы, давайте. К надвос о чем.

1121
02:08:13.270 --> 02:08:24.410
Konstantin: Давайте вопросик вот У нас селект если, У нас без дефолта и У нас ни Один канал Еще ну в Него Еще никто ничего не Записал мы получается, Блокируемся Да.

1122
02:08:24.410 --> 02:08:24.980
Михаил Непряхин: Да и.

1123
02:08:24.980 --> 02:08:31.870
Konstantin: Ничего Не происходит а вот дефолт получается Блог снимает Или Мы просто как Делается.

1124
02:08:32.210 --> 02:08:42.160
Михаил Непряхин: Э Блок с каналов не снимется они как были недоступны на Чтение Так и останутся просто Мы выйдем из этого блока селект

1125
02:08:42.330 --> 02:08:51.430
Михаил Непряхин: и Разблокируемся то есть как бы поток выполнения он перестанет блокироваться ну в Эти селекты он под дефолт и сразу берет выходит и Дальше продолжает работать.

1126
02:08:51.710 --> 02:08:53.940
Konstantin: Найти канал не разгузится.

1127
02:08:53.940 --> 02:08:57.330
Михаил Непряхин: Не не но они Там они своей жизни живут

1128
02:08:57.500 --> 02:09:07.850
Михаил Непряхин: и когда придет время ну если их никто не читает Мы об этом и не узнаем Мы тут селекта вышли и нам. Уже не интересно Что Там, с этими каналами Мы уже здесь опять свободны

1129
02:09:14.770 --> 02:09:25.650
Михаил Непряхин: да да да ну и какой-то Нужен какая-то нужна причина для Выхода ну вот обычно Делают ну Там либо сигнальный канал вот как здесь стоп

1130
02:09:26.170 --> 02:09:38.210
Михаил Непряхин: что вот тут, бесконечный, цикл вот это в бесконечном цикле и вот оно здесь вот выполняет свой кейс ну только здесь там мы Не, пишем когда мы просто здесь какую-то работу идем и либо нам

1131
02:09:38.210 --> 02:09:49.170
Михаил Непряхин: кто-то закроет вот этот канал и мы поймем ага пора выходить мы Закончились типа английского шендаун либо Мы здесь вот контекст дан Делаем есть контекст

1132
02:09:49.280 --> 02:10:01.920
Михаил Непряхин: У Него есть метод дан это то же самое Там под капотом сигнальный канал условный который мы тоже таким образом можем просигнализировать передать сигнал другим картинам все пора закрываться

1133
02:10:02.640 --> 02:10:06.120
Михаил Непряхин: и это вот основной паттерн как бы вот оно вот все так работает

1134
02:10:06.210 --> 02:10:23.070
Михаил Непряхин: и Кафка там какая-нибудь Кафка читает коннекшины и Тоже, У нее постоянно в селекте она проверяет Не надо ли закрываться не надо ли закрываться ага надо скрываться закрываемся выходим и вот этот весь грех фуршат даун он построен вот на этом Патруне

1135
02:10:25.880 --> 02:10:31.780
Михаил Непряхин: Так Давайте самый Глупый вопрос если. Где-то что-то Не Поняли но Боитесь спросить но все равно Не Поняли.

1136
02:10:31.780 --> 02:10:33.550
Илиас Эззахид: Можно тупой вопрос.

1137
02:10:33.550 --> 02:10:34.030
Михаил Непряхин: Давайте.

1138
02:10:34.030 --> 02:10:42.480
Илиас Эззахид: В селекте получается когда зарабатывает кейс когда закрывается канал или когда записываем ли и то и другое.

1139
02:10:43.460 --> 02:10:51.030
Михаил Непряхин: Аа так ну первый вариант Ээ Мы канал закрыли допустим здесь стоп если Мы канал закрыли

1140
02:10:51.560 --> 02:11:00.040
Михаил Непряхин: ну этот кейс сто процентов доступен на Чтение потому что из закрытого канала Мы можем читать Всегда,

1141
02:11:00.220 --> 02:11:05.020
Михаил Непряхин: Поэтому Канал закрыт кейс вообще разблокирован пожалуйста, из Него сразу читаем

1142
02:11:07.000 --> 02:11:11.440
Михаил Непряхин: если мы в канал что то записали

1143
02:11:12.020 --> 02:11:15.780
Михаил Непряхин: то мы соответственно можем из него прочитать

1144
02:11:15.990 --> 02:11:17.970
Михаил Непряхин: Поэтому тут тоже кейс доступен

1145
02:11:18.600 --> 02:11:30.780
Михаил Непряхин: и на запись допустим мы хотим? Тут буфер. Еще позволяет хотим? Записать в первый канал мы берем первый канал и в Него записываем сорок Два

1146
02:11:31.280 --> 02:11:35.890
Михаил Непряхин: и этот кейс тоже сразу сработает если есть возможность записать канал

1147
02:11:36.070 --> 02:11:52.760
Михаил Непряхин: просто многие еще вот эту штуку забывают что, то что, из Кейсов читать можно каналы это как, бы понятно это вот самый. Популярный Патруль Так и есть Мы Из кейсов читаем Но вот То Что в Кейсе так-то еще и Записать можно вот Это прямо редкое явление и при этом многие забывают

1148
02:11:52.920 --> 02:11:56.210
Михаил Непряхин: а Это во многих, как бы случаях бывает Суперполезно.

1149
02:11:58.610 --> 02:12:03.900
Илиас Эззахид: Непонятно честно Говоря вот этот как можно сам Написать кейс

1150
02:12:04.090 --> 02:12:06.200
Илиас Эззахид: и Записать сразу в Канал

1151
02:12:07.130 --> 02:12:07.950
Илиас Эззахид: не понимаю.

1152
02:12:07.950 --> 02:12:15.700
Михаил Непряхин: А вот Это давайте еще Раз, напишу ну короче говоря смотрите в чем суть интеллекта

1153
02:12:16.150 --> 02:12:19.990
Михаил Непряхин: селект он обрабатывает

1154
02:12:20.970 --> 02:12:22.290
Михаил Непряхин: вот эту Стрелку,

1155
02:12:22.800 --> 02:12:27.580
Михаил Непряхин: то Есть мы в селекте Можем тут в Кейсе усиле кто Можем много чего написать

1156
02:12:27.900 --> 02:12:34.980
Михаил Непряхин: Но будет смотреться Именно на вот на эту стрелку то есть Мы блокироваться. Будем на Этой Стрелке

1157
02:12:35.590 --> 02:12:36.680
Михаил Непряхин: Типаан

1158
02:12:36.940 --> 02:12:38.410
Михаил Непряхин: Ммм

1159
02:12:39.220 --> 02:12:44.040
Михаил Непряхин: Если Мы можем и прочитать и записать

1160
02:12:44.380 --> 02:12:50.150
Михаил Непряхин: вымерться Случайно случайник есть выберет либо запишем либо Прочитаем

1161
02:12:50.600 --> 02:12:54.450
Михаил Непряхин: если ничего не доступно а вот записать мы можем но мы запишем

1162
02:12:54.910 --> 02:13:00.520
Михаил Непряхин: а если кана уже Переполнен то у Него, там не знаю буфер, был один

1163
02:13:00.880 --> 02:13:07.180
Михаил Непряхин: вот Мы уже один на него записали и тут в кейсе еще Хотим, записать эта Блокировка Мы записать не можем

1164
02:13:07.820 --> 02:13:20.640
Михаил Непряхин: ну, тогда, мы смотрим на Эти Кейсы типа можем ли мы прочитать Если мы Не можем прочитать ну, просто вообще полная Блокировка ждем, Пока мы либо записать сможем либо прочитать сможем вот такая Идея.

1165
02:13:20.640 --> 02:13:23.040
Konstantin: А Без дефолта выход Не, происходит Дай.

1166
02:13:23.040 --> 02:13:30.320
Михаил Непряхин: Без дефолта выход, не происходит да если ничего нам не доступно все операции заблокированы

1167
02:13:30.350 --> 02:13:49.080
Михаил Непряхин: и просто будем здесь заблокированы навсегда Пока Не Разблокируется возможность Записать Или прочитать канал если Нет Дефолта а если есть. Дефолта он сработает Еще короче на собеседниках любят приковываться. Дефолт вот так вот первым кейсом делать но на самом деле не важно он где угодно. Может быть как бы он работает одинаково тут же случайный порядок

1168
02:13:49.080 --> 02:13:55.330
Михаил Непряхин: и кейсы будут в первую очередь проверяться а потом дефолт но еще доходы принято так в конце писать

1169
02:13:55.770 --> 02:13:56.730
Михаил Непряхин: так Что вот.

1170
02:13:58.180 --> 02:14:14.610
David R: Ну это получается немного и

1171
02:14:14.720 --> 02:14:26.790
David R: в Селекте он пробегается по всем. Кейсам он смотрит каждый кейс Если ни одного, нет он просто берет и блокируется на каком-то рандом или на первом и почему он вообще блокируется вот это.

1172
02:14:26.790 --> 02:14:27.230
Михаил Непряхин: Да.

1173
02:14:27.230 --> 02:14:28.950
David R: Это какая-то Странная Идея.

1174
02:14:29.460 --> 02:14:40.590
Михаил Непряхин: Он блокирует во Первых смотрите про Селег все Таки не надо думать как о свече То есть просто подумали и подумали как же это сделать и вот такую конструкцию выбрали

1175
02:14:40.800 --> 02:14:50.000
Михаил Непряхин: ну просто совпадение что тут кейси называются селек то есть он со свечом ну вообще ничего Общего Не имеет Ну да есть, дефолт да вот Дефолтное поведение

1176
02:14:51.070 --> 02:15:05.260
Михаил Непряхин: Ну похоже на свич в Принципе да У нас же Свечи если ничего Не попали Мы Никуда то Мы По дефолту Выйдем и здесь также Мы к дефолту Выйдем если ничего Не попали Но в остальном поведение совсем Другое то есть здесь именно оно

1177
02:15:06.200 --> 02:15:22.380
Михаил Непряхин: как бы мы когда мы блокируемся то мы не на чем-то конкретном блокируемся а мы блокируемся вообще на селекте что как бы блокировка она вот кто, первый, разблокируется вот туда мы и попадем

1178
02:15:22.590 --> 02:15:25.300
Михаил Непряхин: как бы блокировка она на весь селект идет.

1179
02:15:26.900 --> 02:15:27.760
Михаил Непряхин: Вот

1180
02:15:28.720 --> 02:15:30.020
Михаил Непряхин: скорее Тылуп

1181
02:15:30.390 --> 02:15:40.610
Михаил Непряхин: возможно возможно можно думать об Этом как о Лупе но только рандомном опять желупее если все доступно всякий если Доступный то Б трандом.

1182
02:15:42.330 --> 02:15:49.790
Илиас Эззахид: То есть я правильно понимаю есть понятие блокировка канала есть еще понятие блокировка внутри селекта.

1183
02:15:51.290 --> 02:15:54.520
Михаил Непряхин: Да да то есть

1184
02:15:54.740 --> 02:15:59.290
Михаил Непряхин: селект сам по себе, сущность такая которая может заблокироваться

1185
02:15:59.680 --> 02:16:03.840
Михаил Непряхин: и ну если допустим вот здесь мы

1186
02:16:04.140 --> 02:16:05.220
Михаил Непряхин: читаем

1187
02:16:06.220 --> 02:16:07.790
Михаил Непряхин: значит вот Мы читаем канал

1188
02:16:08.300 --> 02:16:11.000
Михаил Непряхин: и в него, еще никто ничего не Записал А Мы читаем

1189
02:16:11.410 --> 02:16:21.190
Михаил Непряхин: Мы здесь заблокируемся потому Что Мы не можем прочитать канал пустой мы из Него не можем прочитать мы здесь ждем пока кто, нибудь в Него запишет

1190
02:16:21.860 --> 02:16:26.980
Михаил Непряхин: по сути когда мы берем Блокировка ну Это такой как Бы слип

1191
02:16:27.390 --> 02:16:31.140
Михаил Непряхин: Но Только с возможностью Разбудить

1192
02:16:31.410 --> 02:16:37.290
Михаил Непряхин: То есть если вдруг появится что То в Этом канале То грутина Будет разбужена

1193
02:16:37.559 --> 02:16:39.440
Михаил Непряхин: То есть Как, Бы есть Обратная связь

1194
02:16:39.730 --> 02:16:44.120
Михаил Непряхин: Как, Бы все блокировки. В гоу они с обратной связью

1195
02:16:44.459 --> 02:16:48.990
Михаил Непряхин: и Это такой иван? Клуб но он такой сложный

1196
02:16:49.200 --> 02:17:03.290
Михаил Непряхин: и и

1197
02:17:03.870 --> 02:17:15.290
Михаил Непряхин: если мы Понимаем что мы заблокированы где-то а где мы заблокированы ну вот мюток да мы заблокировались на ютаксе пока он Не разблокирован смысл Нет его тревожить чего толку проверять

1198
02:17:15.459 --> 02:17:19.330
Михаил Непряхин: Мы Заблокированы Можно Не проверять Поэтому в этом смысле это ну?

1199
02:17:19.350 --> 02:17:29.160
Михаил Непряхин: Не ввентвук потому Что мы не проверяем мы и так Замужем закированы а когда мы Разблокируемся мы узнаем об этом нас разбудят то есть как бы Тут

1200
02:17:29.160 --> 02:17:44.740
Михаил Непряхин: оно Не, То Что Мы Там постоянно? Что-то проверяем Нет Мы просто понимаем Что Мы Заблокированы Мы и Ждем То Же самое с Каналом вот попали Мы на Канал Ну, Пока с той стороны Не Запишут Мы Даже и пытаться Не будем Из него, читать Мы просто, эту грудью Не Берем и Ставим

1201
02:17:44.850 --> 02:17:52.770
Михаил Непряхин: в конец очереди и как бы либо вообще там в глобальную очередь Переносим а из глобального Чародея она идет

1202
02:17:52.820 --> 02:18:07.840
Михаил Непряхин: тогда когда м-м надо там разблокироваться и это будет Иметь. Смысл то Есть вот как бы когда яблокировка это имеется в виду Что гурутина снимается с выполнения. Она Реально снимается в выполнении либо. В конец Очереди. Идет,

1203
02:18:08.420 --> 02:18:31.090
Михаил Непряхин: А и

1204
02:18:31.090 --> 02:18:37.270
Михаил Непряхин: и вот пока с другой стороны Не. Запишут Мы ее даже проверять не будем чего ее проверять никто не пишет

1205
02:18:37.270 --> 02:18:42.629
Михаил Непряхин: они с селектом То же самое То есть как бы селекто очень Сложная структура Там под Капотом

1206
02:18:42.629 --> 02:18:49.110
Михаил Непряхин: Просто Рокет сайнс Там веселек Даже Не спрашивают о собеседниках потому что Пока никто Нормально Там его

1207
02:18:49.110 --> 02:18:56.260
Михаил Непряхин: Не разобрал, нормальных видосиков не сделал ну уж Там, ну прямо вот свой мир отдельный свой планировщик

1208
02:18:56.260 --> 02:19:10.790
Михаил Непряхин: Поэтому мы изучаем селект просто по поведению а не по внутреннему устройству потому что тот случай когда изучу внутреннее устройство все равно нет смысла потому что Ничего не меняется Важно знать просто как на уровне синтексиса оно работает и

1209
02:19:10.790 --> 02:19:17.639
Михаил Непряхин: ты уже по какому подкопам работает ну вот слишком сложно даже Можно не Пытаться Разобраться ну опять же если, вам Интересно можете попробовать

1210
02:19:18.520 --> 02:19:20.780
Михаил Непряхин: ма может вам зайдет если, вы хотите,

1211
02:19:21.180 --> 02:19:25.780
Михаил Непряхин: вот это такое же хобби не Особо имеет смысла не для работы но для собеседников не нужно

1212
02:19:26.139 --> 02:19:28.360
Михаил Непряхин: еще еще глупый вопрос есть

1213
02:19:29.030 --> 02:19:38.129
Михаил Непряхин: нам было все так максимально сложно сделать подково чтобы никто ничего на собеседник, Не Спрашивал Да так и было пока Там кто-нибудь что-нибудь с какую-нибудь статью. Не напишут Или Там

1214
02:19:38.320 --> 02:19:46.090
Михаил Непряхин: Это как происходит типа начинают смотреть каких, нибудь блогеров или сойти читать узнали

1215
02:19:46.200 --> 02:20:04.420
Михаил Непряхин: потом на собесеи обязательно спросят а вот ты читал эту статью, ну типа как, бы такая синаронизация идет, типа а ты вот настоящий гожник а ты вот следишь за этим а ты вот такой же упортый как я а ты вот этот ролик смотрел, любовна Ага смотрела ну ладно идем Дальше даже не интересно то есть как бы по сути это просто такой чек свой чужой типа

1216
02:20:04.420 --> 02:20:09.970
Михаил Непряхин: если, ты как бы, видно Что ты чего-то отвечаешь на Эти вопросы, там даже Глубоко Не покопать Не буду

1217
02:20:10.020 --> 02:20:27.440
Михаил Непряхин: а вот если, видно Что ты плаваешь вот они Там Начинают, Зарывать а вот это ты знаешь и

1218
02:20:28.190 --> 02:20:40.410
Михаил Непряхин: так пока, мыным, произведением Роль ну вот баун мне больше нравится тузов вот У Него вот Прорантайм ролик Ну по мне Слабоватенькая как то ли Он Это объясняет как то Плохо короче

1219
02:20:40.520 --> 02:20:59.410
Михаил Непряхин: и и

1220
02:20:59.900 --> 02:21:00.950
Михаил Непряхин: эээ

1221
02:21:01.630 --> 02:21:17.840
Михаил Непряхин: в то чего Нет но вот как с патронами про эти проканалы гурутины ну там такой ролик вообще и

1222
02:21:17.950 --> 02:21:31.130
Михаил Непряхин: как про дженерики тоже То есть ну на дженериках, продакшене почти ничего не пишут редкое явление а как только начинает Там прожинать Или чего-нибудь снимать ролик вот так Дженнетки сразу просачиваются появляются там где они в общем-то и Не Нужны были

1223
02:21:32.810 --> 02:21:35.540
Михаил Непряхин: давайте еще совсем глупые тупые Вопросы, есть

1224
02:21:35.830 --> 02:21:37.240
Михаил Непряхин: елиса заканчивала

1225
02:21:37.520 --> 02:21:40.280
Михаил Непряхин: ну прямо-то все Не сильно задержались.

1226
02:21:41.390 --> 02:21:43.390
Konstantin: Да еще один быстренький вопрос.

1227
02:21:43.390 --> 02:21:43.710
Михаил Непряхин: Да.

1228
02:21:43.710 --> 02:21:53.970
Konstantin: С тем же селектом допустим У нас два кейса доступные из канала выбрался какой-то рандом и выполнился второй соответственно Не будет Выполнен да.

1229
02:21:53.970 --> 02:21:56.760
Михаил Непряхин: Да со втором ничего Не произойдет

1230
02:21:59.710 --> 02:22:06.970
Михаил Непряхин: в следующий раз Мы его Выполним тот второй который был готов а если, Не было цикл, фор мы все пойдем дальше и как бы все забыли про него,

1231
02:22:09.140 --> 02:22:10.230
Михаил Непряхин: вот

1232
02:22:10.980 --> 02:22:29.320
Михаил Непряхин: в Раз, Причем эту же конструкцию тоже украли и в общем-то власти повторили все То Же самое не Стали ничего изобретать тоже каналы и добавили

1233
02:22:29.420 --> 02:22:35.780
Михаил Непряхин: токио но Там мне тоже не очень Нравится как это реализовано Потому что там в Раз, это и

1234
02:22:36.410 --> 02:22:45.650
Михаил Непряхин: ключ в гошке как-то покруче это сделано но что кошка изначально была сделана как фрейнворк для работы вот с этим то есть это по Сути такой френбург

1235
02:22:45.950 --> 02:23:01.020
Михаил Непряхин: удобный для работы вот с параллельностью с синхронностью что, вы вообще не создаете эти, потоки ну скажите скажите круто то, Есть Никакие потоки руками не создаете грутина сказать так по сути декларативно

1236
02:23:01.130 --> 02:23:12.120
Михаил Непряхин: сказали таки я хочу запусти вот этот участок кода, параллельно ну а если, мы в одном потоке, ну будет синхронно да просто, вот сделай это как, нибудь

1237
02:23:12.130 --> 02:23:21.170
Михаил Непряхин: и оно работает ну вот это вот правильно я когда только начал с этим работать кайфу вообще нереально то есть какие-то там парсеры

1238
02:23:21.720 --> 02:23:35.500
Михаил Непряхин: что-то там ну сервера понятное дело вообще нереальное удовольствие писать на расте твой нарастик на гол, на расти как Раз таки никакого. Удовольствия нет Раз этот язык. Про боль

1239
02:23:36.350 --> 02:23:37.640
Михаил Непряхин: так ладно

1240
02:23:38.560 --> 02:23:41.570
Михаил Непряхин: все давайте тогда всем пока

1241
02:23:43.610 --> 02:23:45.600
Михаил Непряхин: смотрите Домашку, мороженое.

