Михаил Непряхин: Так всем привет как видно слышно Пожалуйста, поставьте плюсики если все Ок
Михаил Непряхин: да хорошо
Михаил Непряхин: Так значит
Михаил Непряхин: задачки Так Сейчас Периодически будем решать задачки
Михаил Непряхин: собесов типовые типичные задачи себесов
Михаил Непряхин: ну вот Сейчас. Порешаем задачки потом посмотрим кэш простейший использование мапы
Михаил Непряхин: и сегодня Поговорим по порогу рутины про планировщика про работу планировщика на низком уровне короче сегодня третья, сложная тема,
Михаил Непряхин: вот их всего Реально Сложных, три то есть, это вот посылается большая Глубокая. Тема даже не то что, сложные объемные слайсы мапы ну как мама конечно не такая сложная на самом деле но вот
Михаил Непряхин: более-менее просто надо представлять что это такое чтобы не совсем это было как бы что-то магическое чтобы хоть примерно понимать как оно там настроено
Михаил Непряхин: чтобы в случае чего можно Было Поддержать разговор чтобы совсем Не Сажать на Собеседование
Михаил Непряхин: вот и вот планировщик
Михаил Непряхин: и работа вообще как бы что происходит в ронтайме гол
Михаил Непряхин: так значит три три Задачки и наслайс решим
Михаил Непряхин: кто хочет потренироваться типа
Михаил Непряхин: кто хочет Попробовать решить как будто
Михаил Непряхин: он нас собеседник
Михаил Непряхин: Ну Голосом Просто Озвучить
Михаил Непряхин: что выведет этот код
Михаил Непряхин: Нет Я вю Кэш про это Больше разговаривают Больше Говорят чем, реально говорю у Кэш тоже есть у Меня решение для его юкоса но я боюсь нравлю его в Стороне напишите на Собеседование ну посмотрим я говорю конечно с Вами посмотрим потому Что это Там
Михаил Непряхин: часто слышу
Михаил Непряхин: так значит есть Желающие решить эту Сдачу
Михаил Непряхин: короче значит звучит так Что выведет этот код
Михаил Непряхин: если желающих, Нет придется мне самого Решать
Михаил Непряхин: Я специально Не Запускал
Михаил Непряхин: Есть желающих, Давид.
David R: О всем привет слышно.
Михаил Непряхин: Да смешно.
David R: А Давайте Попробуем.
Михаил Непряхин: Давайте.
David R: Можно начинать.
Михаил Непряхин: Да Давайте озвучивать.
David R: Но я По Размышляю Вслух получается Варфу сластьентовна создается с значением По умолчанию.
Михаил Непряхин: А какое значение по умолчанию.
David R: Нулевое нулевое значение.
Михаил Непряхин: Да сбуд ним соответственно да
Михаил Непряхин: так.
David R: И туда можно соответственно опентиться фуу апенд Один у нас будет Единица второй фуапен у нас будет один два третьих.
Михаил Непряхин: Не-не-не смотрите Давайте короче будем решать вот если вам подобное Попадается чтобы здесь ошибиться, Не облажаться
Михаил Непряхин: короче вы Прям вот по строчке значит Давайте прямо, здесь пишите
Михаил Непряхин: Во-первых Сразу пишете лен Какой здесь будет лена Какой здесь бодка Пасе.
David R: Ммм.
Михаил Непряхин: Так лен и капасти какой будет лен какой водка пасе вот в этом Месте пока еще до пэнда не дошли.
David R: А ноль.
Михаил Непряхин: Вот да вот Ноль Ноль
Михаил Непряхин: и значит массив который У нас под капотом Давайте Так Тоже
Михаил Непряхин: шос.
David R: А нет никакого онлайн, редактора который позволяет совместно редактировать код.
Михаил Непряхин: Здесь есть ээ но
Михаил Непряхин: дольше вот Ну он по-моему это по-моему он Не будет работать это все под. Выпуном Ну короче это Геморра наслаждает его Планеты в Принципе он военный Редактор Есть
Михаил Непряхин: так в теории можно Даже Онлайн-редактор, открывать ну Сейчас покажу так А Потом следующий Раз, можно действительно найти онлайн-редактор короче вот просто главное Озвучивать вот в текущий момент значит вот У нас такая история ну? И здесь логично Что ну как бы то же самое
Михаил Непряхин: о значит дошли Мы до Этой Строчки и будем менять состояние значит вот дошли Мы от Этой строчки и как меняется Состояние.
David R: То О лен Один Кап Один Эровительница.
Михаил Непряхин: Да значит это тут была таре вот такой арыч у нас Там винтовый да.
David R: Значит Он такой.
Михаил Непряхин: А
Михаил Непряхин: вот такое рей ну, с единицы собственно да.
David R: Тяву дальше будет два два один два и рай.
Михаил Непряхин: Так лен двака почти два рэй два
Михаил Непряхин: дакот.
David R: Один два угу
David R: ну. Дальше будет Три четыре
David R: лэн Три капаситы четыре и рей Три элемента Один два Три.
Михаил Непряхин: Вот а почему лендтрека почти четыре.
David R: А У нас Капасити при переполнении удваивается до Определенного значения ну Пока в пределах Наших Значений копасть У нас будет удваиваться. А лэнну Это соответственно Количество элементов Которые находятся в массив на который Ссылается слась.
Михаил Непряхин: Так хорошо дальше участвовать Сейчас у нас самое сложное смотреть это обратите внимание Мы тут Берем один с лайс а призываем его в Другой, слайс это Не типичным поведением Мы Так в жизни Никогда Не Делаем а здесь вот Так
Михаил Непряхин: и вот теперь мой папа значит У нас еще появляется еще Один слайс Ну Давайте теперь? Рассуждайте тут.
David R: О Мы Берем а получается Неслась бар в Него, Мы запихиваем значение Которое у нас получится при сложении, к фу при прибавлении к фу значение пять
David R: получается у нас в баре лен Будет четыре Капасити четыре а рэй Будет четыре элемента один два три четыре
David R: четыре лимета один Два Три четыре.
Михаил Непряхин: Ну.
David R: О Теперь ну в на строчке Барапен Мы не меняли сам фу а в Бара просто Присвоили? Значение Операции фу и четверки сложения Поэтому у нас фу остался неизменным в фу Теперь Мы.
Михаил Непряхин: Смотрите на этот вопрос в тему, здесь Раз, мы в бар
Михаил Непряхин: Сейчас присвоили. Добавили запретили
Михаил Непряхин: получается что бар
Михаил Непряхин: он имеет свой массив Или он ссылается вот на этот из фу.
David R: Интересный, вопрос.
Konstantin: С лайтс.
Михаил Непряхин: Да давайте, значит эээ в чате как вы думаете,
Михаил Непряхин: Сейчас слайсы фу и ба.
David R: Не будут ссылаться на Один и тот же массив потому что Мы передаем Мы создаем копии у Слайса а Копия сласть засылается на тот Же самый массив.
Михаил Непряхин: И получается У нас Сейчас Логически У нас и фу и бар Ссылается на Один. И тот же массив
Михаил Непряхин: Да верно то есть ой тут у меня опечатка была тут на самом деле четыре, будут да то есть смотрите получается мы на самом деле вот здесь вот имеем
Михаил Непряхин: указательна
Михаил Непряхин: ну как закручена наверх да нет.
David R: Нет.
Михаил Непряхин: К
Михаил Непряхин: Сейчас Найду вот Крошечный пойнтер на верхний вот на этот вот массив
Михаил Непряхин: и Там Мы добавили четверку
Михаил Непряхин: и получается. Что
Михаил Непряхин: м-м ну лен три да обратите внимание лин три то есть если мы будем как бы смотрите козлай это вью на массив так если мы будем смотреть с точки зрения этого свайса То. Увидим только первые три элементов
Михаил Непряхин: так. Это понятно если будем с точки зрения бара смотреть то увидим четыре вот такая Интересная штука Получилась то Есть У нас получается здесь Один. И тот же массив Под капотом Окей Давайте дальше дальше Начнем.
David R: Вот и
David R: А кап будет восемь потому что Он удваивается лэн по факту тут было четыре стало пять.
Михаил Непряхин: Подождите тут, было четыреста опять
Михаил Непряхин: лен.
David R: А Не-не-не У Него У Него Лэннинг свой Оставался.
Михаил Непряхин: Да.
David R: А мы.
Михаил Непряхин: Это У Него Простыки. Оставался три.
David R: Только Интересно.
Михаил Непряхин: Да
Михаил Непряхин: но Аппарат работает строго просто делает Плюс один ну или смотря Сколько десертов Носят землями. Значит просто Плюс один клену а он был три
Михаил Непряхин: что же было
Михаил Непряхин: ну просто ленба вот грин год четыре.
David R: Элементынули
David R: если лэм. Будет четыре тогда Почему У нас в Копасти удваивается
David R: а да Но Он Не удвоится и.
Михаил Непряхин: Да то есть смотрите вот в чем прикол когда происходит двойника пасе когда лен равно к опасности а здесь лен был не равенка пасти
Михаил Непряхин: Поэтому Выделения массива не Будет Мы просто
Михаил Непряхин: сделаем лен четыре
Михаил Непряхин: Теперь вопрос а Что произойдет с этим массивом
Михаил Непряхин: было вью до трех было вью вот такое у него
Михаил Непряхин: мы добавляем элемент пятерку
Михаил Непряхин: вопрос я не, застрели.
David R: Перезаотрет.
Михаил Непряхин: Или задрено правильно
Михаил Непряхин: перед зарет, лен было четыре копайте четыре и перезаотрет,
Михаил Непряхин: не теперь мы Показываем выводим фу и бар
Михаил Непряхин: что выведет.
David R: Ээ папу по-моему.
Михаил Непряхин: Ну Давайте Что уезть фу Да Что выйдет фу.
David R: Ну фул, эти то что у него есть да бар должен Вывести то Же самое.
Михаил Непряхин: Да Потому Что.
David R: Потому Что Мать поттер Не поменялся У нас Не было локации У нас Не было Нового Массива массе остался тот же самый.
Михаил Непряхин: Да По факту мы Сейчас Имеем просто Два Одинаковых Массива
Михаил Непряхин: просто
Михаил Непряхин: здесь Запутывание в Том что в баре ну как, Будто бы что как в чем ловушка как Будто бы фу понятно что выведет вот Этого дела
Михаил Непряхин: а
Михаил Непряхин: а бар последний Раз, когда мы О баре Думали бар был Вот такой Вот
Михаил Непряхин: и Вот Как Будто бы кажется, Что, Сейчас увидеться один-два-три четыре но Нет Мы же тут вот этим вот действием перезатерли последний элемент и выйдет одно, и то же
Михаил Непряхин: уж Сейчас давайте проверим мне тут, тоже бывает ошибаюсь когда эти зате Решают, Поэтому мне Один, двадцать пять Один, двадцать пять вот но это вас не ошибся
Михаил Непряхин: вот то есть гм
Михаил Непряхин: это классическая задача вот на гонку данных
Михаил Непряхин: на Понимание того Что слась это вью на массив на Понимание того Что они Разделяют Один и тот Же массив
Михаил Непряхин: и на Понимание того что Удваивание происходит только тогда когда лена Не Хватает а если лена хватало как в Этом случае никакого удвоения Не произошло просто взяли да и перезатерли
Михаил Непряхин: ну такая история
Михаил Непряхин: так есть ли тут, Вопросы, понятно, ли вот как решать вот такие вот задачи вот прямо, Не стесняйтесь ленка Пасе и Всегда пишите
Михаил Непряхин: потому Что Оно Сразу же становится Проще и понятнее
Михаил Непряхин: Давайте значит следующая задача
Михаил Непряхин: Так это решение умерло
Михаил Непряхин: Так Есть Еще желающее кто-нибудь хочет.
Илиас Эззахид: Но есть да.
Михаил Непряхин: Найд.
Илиас Эззахид: Так слышно меня.
Михаил Непряхин: Да смешно.
Илиас Эззахид: Едва а так один два буду размышлять вслух.
Михаил Непряхин: Нет давайте сразу. Значит здесь сразу. Начинаем с того. Что пытаемся понять какую ленту как опасность значит Какой здесь лен.
Илиас Эззахид: А Ну Лены к опасности ты предполагаешь что, они равны это оба четыре.
Михаил Непряхин: Так и трек как выглядит аррей под капотом.
Илиас Эззахид: Ээ так рей это слайсбань.
Михаил Непряхин: Нет это ну, как бы мы давайте будем представить да понятно, что это совасть байден, как бы будем, думать, о нем Как Все-таки
Михаил Непряхин: ну короче так же Он будет Выглядеть! Просто Вот чтобы Вот это Вот понимать.
Илиас Эззахид: А.
Михаил Непряхин: Да хорошо значит Что произойдет в Этой строке в чем мы делаем.
Илиас Эззахид: Так берем.
Михаил Непряхин: Первый элемент.
Илиас Эззахид: Так.
Михаил Непряхин: Какой будет Первый элемент из этих.
Илиас Эззахид: Так так это и втор это Два это исключительно то есть он не считается.
Михаил Непряхин: Так.
Илиас Эззахид: А.
Михаил Непряхин: Так у нас будут два Элемента
Михаил Непряхин: начиная с какого миром.
Илиас Эззахид: Буду предполагать что с нуля.
Михаил Непряхин: Нет мы вот здесь вот это индексы да значит это надо вам занять на кубе, индекса да.
Илиас Эззахид: То есть это то есть мы считаем смотрят то есть это тут бд.
Михаил Непряхин: Да то есть смотри индексы вот они здесь вот так вот идут
Михаил Непряхин: ну, и там еще четвертый можно сразу рисовать для понимания что он Там может Быть вот Он понадобится Этой второй части вот Мы говорим что берем
Михаил Непряхин: с индексом Один включительно так
Михаил Непряхин: значит б
Михаил Непряхин: и Докуда берем.
Илиас Эззахид: Аде может это а да и не считается так что только там только бы на самом деле да.
Михаил Непряхин: Да да То есть Мы берем только один свадьбы да
Михаил Непряхин: так и вот У нас и Мы присваиваем свадьбы Давайте Теперь туда Пишем. Как Будет Выглядеть. Свадьба
Михаил Непряхин: Какой у него. Будет Лент Какой Копааси и Какой слайс под капотом.
Илиас Эззахид: Аа ну под как потом тот же на самом деле.
Михаил Непряхин: Такой оригинальный
Михаил Непряхин: ага.
Илиас Эззахид: Аа А вот полэн и кпасити лэннин У Него будет аа
Илиас Эззахид: один
Илиас Эззахид: э, Слеж.
Михаил Непряхин: Ммм
Михаил Непряхин: так.
Илиас Эззахид: Простите Это будет Остатки остановы то Есть было четыре осталось ээ
Илиас Эззахид: Так а из второго элемента считаем но с индекс Один то Есть Это.
Михаил Непряхин: Да.
Илиас Эззахид: Два есть два.
Михаил Непряхин: Нет Нет Не два на самом деле три
Михаил Непряхин: капасти у него было три.
Илиас Эззахид: А потому что да исключили только пиа индекс ноль то их да отвезти.
Михаил Непряхин: Вот это важно понимать значит когда мы занимаемся такой нарезкой
Михаил Непряхин: мы берем даст первого, элемента но все что Было справа
Михаил Непряхин: Мы Это да Считается Поэтому опасности Реально, Год три
Михаил Непряхин: и Грубо говоря Мы здесь можем еще перезатереть вот Эти, два Элемента догнать ленты трех без реакции
Михаил Непряхин: и под капотом массив будет Все-таки не такой
Михаил Непряхин: потому что и
Михаил Непряхин: ну хоть он будет тот же самый Но он будет начинаться с Б
Михаил Непряхин: как бы Это Я тут Упрощаю Так пишу как бы да принесшу под капотом он было четыре на четыре Элемента Но мы вот в этом в этом месте когда Мы Сказали Что Берем Сби
Михаил Непряхин: Мы сдвинули указатель вот набери
Михаил Непряхин: и поэтому Мы будем видеть и
Михаил Непряхин: и права расширять Поэтому да условно там был тот же самый массив ну вот он как бы считаем что он будет уже такой массив
Михаил Непряхин: так хорошо дальше.
Илиас Эззахид: И дальше Мы это.
Егор Ширяев: Затираем так же Убираем т д и на от-то.
Илиас Эззахид: Это оно это все.
Михаил Непряхин: Давайте рассуждать так Опять мы тут, меняем этот массив пернеслась бы давайте Опять значит какой у него, будет ленка пастить вот это все.
Илиас Эззахид: А лэнд Два опасности также останется три но оно не дошло до три.
Михаил Непряхин: Так
Михаил Непряхин: и что, мы
Михаил Непряхин: да выводим хорошо, выводим здесь так здесь понятно, что, это то же самое а ну вот Здесь получается Да Мы Перезатираем.
Илиас Эззахид: Это затираем.
Михаил Непряхин: Бэт это, вместо б
Михаил Непряхин: так.
Илиас Эззахид: Нет Нет Будет
Илиас Эззахид: эээ тт и это
Илиас Эззахид: Я.
Михаил Непряхин: Так хорошо
Михаил Непряхин: Что выводится.
Илиас Эззахид: Окса.
Михаил Непряхин: Распечатываем вот этот изначальный, смс Что Мы здесь получим.
Илиас Эззахид: Получим а б
Илиас Эззахид: т е.
Михаил Непряхин: Зерна
Михаил Непряхин: так
Михаил Непряхин: а распечатываем Би.
Илиас Эззахид: Будет Бт Я.
Михаил Непряхин: Верно.
Михаил Непряхин: А ну как Не, совсем верно. Нет
Михаил Непряхин: смотрите у нас тут лента два ведь,
Михаил Непряхин: То есть Мы вбии.
Илиас Эззахид: Израиль да.
Михаил Непряхин: Да мы только вот на эту часть имеем в виду то есть и мы не увидим
Михаил Непряхин: ну Давайте проверять если, я Не ошибаюсь должен Быть Так
Михаил Непряхин: эйбдите и да видите
Михаил Непряхин: теперь смотрите Что Еще интересно как Тут Еще Можно усложнить
Михаил Непряхин: как я сказал
Михаил Непряхин: мы влево не можем и
Михаил Непряхин: То есть Мы можем взять и сказать Что
Михаил Непряхин: Так где Мы это сделать вот здесь значит би.
Михаил Непряхин: Это
Михаил Непряхин: это би. Значит как нам надо его аа расширить Ну Мы беремся Сначала Так Поэтому Слева все Сначала если Мы возьмем просто вот Так вот Ну Мы То, же самое и получим лен Не изменится
Михаил Непряхин: а вот если Мы скажем Что Мы хотим, открыть вот этот вот Е достучаться Оттуда
Михаил Непряхин: то мы можем сделать здесь четверку
Михаил Непряхин: и как бы указать что ну это было исключительно вот она четверка да как бы ее мы не берем и Мы как бы лен вот здесь сдвинем до тройки
Михаил Непряхин: то есть в итоге Мы то есть если Так строго говорить Мы увидим только вот Это!
Михаил Непряхин: Вот а здесь Мы можем лен Таким образом, до трех расширить и этот таки, и увидеть
Михаил Непряхин: вон давайте, Сейчас Мы Напечатаем его
Михаил Непряхин: вот это уже выведет
Михаил Непряхин: и я Тоже,
Михаил Непряхин: а почти три
Михаил Непряхин: Так Сейчас чего-то я ошибся
Михаил Непряхин: спасите три а я говорю до четырех.
Илиас Эззахид: Три потому что Считаем уже Слизного По мотивам.
Михаил Непряхин: Да верно верно мы же уже сби считаем Поэтому это у нас три да носите как бы ну вот даже если ты понимаешь как это работает ошибиться вообще ничего не стоит но если вы размышляете правильно то в Принципе эта сдача засчитается за разрешенную
Михаил Непряхин: вот то есть смотрите мораль какая Решение этих задач,
Михаил Непряхин: а вы в голове это не решите
Михаил Непряхин: то есть в голове, это представить невозможно
Михаил Непряхин: Особенно, бывает по ходу усложнения Всякие придумывают и ну вот вариации вот этого вот вот Этой истории их очень много то есть как бы но основные если, вы понимаете принцип вы чего угодно решите но вариант очень много Вот Поэтому важно понимать что какие вообще есть возможности
Михаил Непряхин: и еще чтобы мы вот так вот не смогли хакнуть мы можем вот здесь вот прямо, копасть резануть по
Михаил Непряхин: лену
Михаил Непряхин: то, есть, вот здесь в этом случае
Михаил Непряхин: копасти бот один
Михаил Непряхин: и Мы эти манипуляции уже Сделать не Сможем
Михаил Непряхин: то есть тут уже больше с
Михаил Непряхин: вот ошибка что Мы говорим д тройку копать эти два как бы ну и
Михаил Непряхин: Так сейчас откуда эта ошибка возникла сейчас
Михаил Непряхин: тут, мы Вби а оно да вот здесь то есть э
Михаил Непряхин: так
Михаил Непряхин: когда Мы говорим возьми один элемент копасть здесь будет вообще
Михаил Непряхин: один получается
Михаил Непряхин: так
Михаил Непряхин: вот так вот Там только бод би а ну. Да Мы же вбиту топендим в Битву Топпенди Поэтому копасти здесь Будет Два Два вот так вот
Михаил Непряхин: и
Михаил Непряхин: здесь Мы не Сможем так сделать да потому Что, У нас Лен- два а Мы хотим, копать Эти, расширить до трех вот Поэтому здесь Ошибка Он говорит Что, почти два
Михаил Непряхин: вот Поэтому Мы можем сделать только ну, не можем Так сделать да да этот как, не прокатит то есть вот как, бы вот это вот есть защита для того чтобы
Михаил Непряхин: подрезать не только Левую часть но когда мы так делаем Мы подрезаем поучаствовать Раз вот так вот с суда указатель сдвигаем
Михаил Непряхин: и Благодаря Вот этого этому. Мы еще и бах Вот так Вот Тоже, подрезаем
Михаил Непряхин: Вот
Михаил Непряхин: но кстати когда мы так делаем
Михаил Непряхин: в изначальном-то массиве оно все равно изменится если Мы даже Там, будем Их менять отдельно. Этот отдельный этот
Михаил Непряхин: они хоть, разойдутся даже покапасть идти но Это все равно единый тот же массив будет под капотом и они все равно будут гонка данных. То есть Это как бы хоть и эта штука она подрезает копасть и Справа но массив под капотом Остается Один, и тот же вот чего Он понимать
Михаил Непряхин: и Третья задача.
David R: А можно можно вопрос о предыдущих задачах найти
David R: на десятые сроки где мы ограничиваем капасити можно ли Туда передать вот вместо хардкожаного двойки ленатби.
Михаил Непряхин: Да Можно, Можно.
David R: Но он наверное сам От себя не принимает ллы
David R: в самом случае.
Михаил Непряхин: Э простите в этот момент лен адби.
David R: Еще не создан.
Михаил Непряхин: И в этом случае, не получится потому что Би еще не создано если вот заранее убей создать
Михаил Непряхин: Но чтобы заранее Би создать Если вы заранее создадите Би придется Тогда Указывать ему лен один
Михаил Непряхин: только Так.
David R: А если, вот в десятой строчке создать без ограничений по кпссете а потом в следующей же строке создать.
Михаил Непряхин: Он может
Михаил Непряхин: да можно вот это уже получится грубо говоря у нас когда Мы так Делаем у нас Там лен Один получается Мы Берем все с самого Начала а здесь Делаем ограничения ленси
Михаил Непряхин: так лена у нас Единица
Михаил Непряхин: а здесь
Михаил Непряхин: ой да Линги
Михаил Непряхин: да
Михаил Непряхин: О типа
Михаил Непряхин: чуть-чуть еды с ума сходит Что типа Можно Это сделать хотя Это нельзя сделать
Михаил Непряхин: а так ну? Если Мы Возьмем лен би а но он чего подсвечет
Михаил Непряхин: плюс один надо делать потому, что смотрите альян это вот сейчас один да вот то здесь будет Единица а она исключительно то есть поучаствовать мы берем то же самое что мы делаем ноль ноль ну что здесь год ноль а здесь как бы ну, ну, и короче
Михаил Непряхин: Ничего Не возьмем Мы Ничего Не возьмем Поэтому плюс один надо делать ну, вот Так вот получится да То, Есть вот Так вот ну ведь, не учился и выглядит но вот вот это тоже самое будет то есть тот же самый констент
Михаил Непряхин: ну вот если мы тут захотим заглянуть то оно.
David R: Не ну я Спрашивал идеи о том чтобы не Ходкодить такие значения если понадобится а что Можно их.
Михаил Непряхин: Да.
David R: И формировать в.
Михаил Непряхин: Ну вот ну вода да вот Так Можно да Так Можно Но вообще все учит Лучше, самой такой судьей Не заниматься
Михаил Непряхин: типа потому что,
Михаил Непряхин: ну лучше, просто, не мутировать исходный смысл вот и все то есть вы понимаете что,
Михаил Непряхин: если, вы начинаете
Михаил Непряхин: переиспользовать представляете вы вот работаете со своим новым с лайсом би он другой но он связан
Михаил Непряхин: си он типа зачем зачем нам Иметь эту связь потому, что если Мы ее получаем Мы э
Михаил Непряхин: должны помнить о том а вдруг кто То си поменяет Оси допустим пришел к нам извне в Функцию а Там, его снаружи кто то Будет менять и Мы это Изменение. Здесь увидим Получим сайт эффект Зачем типа
Михаил Непряхин: чтобы просто защититься от этого Мы Понимаем Что Мы Не хотим? Вообще ничего Общего Иметь Си Мы с Ним Работаем только на Чтение Мы Спокойненько себе, создали здесь в армии Стринг,
Михаил Непряхин: ну, и все и Поедем, в Него Без всяких, там вот этих вот страданий в Этой Фигней потому Что эта вот нарезка вся она ну это только для каких-то алгоритмов Где это уместно и почти нигде это в продакшн коде не встречается вот Поэтому как бы такое
Михаил Непряхин: ну да бой вот если, этот функционал вы знаете ну может быть где нибудь вы примените его таки уместно так хорошо Давайте Третья задача кто Есть желающее нарушение.
dmitriy: Так у нее слышно.
Михаил Непряхин: Смешно.
dmitriy: Давайте Я попробую.
Михаил Непряхин: Найт.
dmitriy: У меня там с ними не так все хорошо
dmitriy: такхэнс
dmitriy: хорошо в Первом случае, это будет у нас.
Михаил Непряхин: Но во-первых смотрите давайте скажите чем мы здесь занимаемся что мы делаем.
dmitriy: А здесь мы создаем массив.
Михаил Непряхин: Правда
Михаил Непряхин: а что за цветочки его здесь вот знаете.
dmitriy: Да то Есть мы сами, заполняем у нас сколько будет элементов сколько мы поставим столько и будет.
Михаил Непряхин: Да Авто.
dmitriy: С назначения.
Михаил Непряхин: Итак какой будет ленно какой копасти в этого наверняка как бы это массив Да довольно странно тут говорить о ленине хорошо Давайте так какой бодко Пасе У этого Массива.
dmitriy: А капасти четыре
dmitriy: ну да.
Михаил Непряхин: Так хорошо. Дальше Чем, Чем, мы дальше занимаемся.
dmitriy: А так дальше викс Мы присваиваем слайс
dmitriy: а
dmitriy: первый элемент То есть здесь у нас.
Михаил Непряхин: Нет смотрите это читается так мы Превращаем этот Наш массив
Михаил Непряхин: флайс.
dmitriy: Так. Превращаем массив в слайс
dmitriy: аа получается с самого Начала до
dmitriy: элементы сойди
dmitriy: один то есть его исключая
dmitriy: а получается здесь у нас будет.
Михаил Непряхин: Давайте так опять, же говорим Сейчас. Про икс говорим про икс Какой У него, Лент Какой Копаете и Какой У него,
Михаил Непряхин: вью под капотом.
dmitriy: Оттокнул Он Будет Один
dmitriy: как Я Думал копайте Будет
dmitriy: а
dmitriy: капасти четыре Потому Что Мы берем с первый элемент.
Михаил Непряхин: Верно верно.
dmitriy: И внутри будет. Только ноль.
Михаил Непряхин: Да да вот вью вот такое
Михаил Непряхин: верно совершенно верно
Михаил Непряхин: дальше вы
Михаил Непряхин: опять опять делаем нарезку из массива свадьба превращаем уже Теперь, в игрок.
dmitriy: А так дальше у нас получится тогда Мы берем с
dmitriy: айди два
dmitriy: и До Конца
dmitriy: Очень получается у нас Будет ээ лэн
dmitriy: два
dmitriy: а
dmitriy: капасети два
dmitriy: и массив Будет два три.
Михаил Непряхин: Так давайте посмотрим берем Со второго индекса. Включительно
Михаил Непряхин: и до конца то есть да Два три Совершенно Верно как почти Два да совершенно верно
Михаил Непряхин: хорошо дальше дальше чем, чем, мы занимаемся. Дальше.
dmitriy: А так
dmitriy: дальше Мы берем
dmitriy: а
dmitriy: как Раз перемен икс и присваиваем Ей
dmitriy: а
dmitriy: вот тут, Я и Не помню точно здесь мы получается делаем то же самое что мы как бы добавляем к слайсу икс.
Михаил Непряхин: Да Да Читается так. Мы Берем с лайсикс
Михаил Непряхин: ну Пока Куда, Мы Присваиваем неважно Да значит Мы Берем свайсикс и в него Добавляем Элемент все элементы из ласейг.
dmitriy: Ага ага Все Я Понял?
Михаил Непряхин: И получаем свайс икс
Михаил Непряхин: и и
Михаил Непряхин: какие характеристики. У этого свалятся, вот в чем вопрос.
dmitriy: Так если. Мы добавляем все элементы из игрек то тогда у нас лэм Будет три
dmitriy: копай сити четыре
dmitriy: ноль три будет тогда ноль два три.
Михаил Непряхин: Но давайте Вспомним тут Я сам решение такой памяти Не. Помню. Так давайте посмотрим значит лен три ну тут на Острые элементы вью Да логично что лена было три это сто процентов какпаседес четыре так почему бы откапасся четверым берем изначально слай Сикс а у него, Капасти четыре да наверное Копасти вот четыре
Михаил Непряхин: а алименты будут Ноль Два три ну, да Совершенно верно тут я с вами Согласен, и Так дальше Мы еще еще Один Опон делаем Так
Михаил Непряхин: Давайте дальше рассуждать Что теперь будет Свайся икс.
dmitriy: А так хорошо то есть Мы получается туда. Добавляем элементы языкрик там их Два
dmitriy: у нас будет значит Лэн
dmitriy: пять
dmitriy: а тут дальше копайся эти удваиваются потому. Что мы уже превысили будет восемь
dmitriy: и ноль два три два три.
Михаил Непряхин: Ноль
Михаил Непряхин: два Три,
Михаил Непряхин: Три,
Михаил Непряхин: так Сейчас проверм игрок у нас два Три, да мы Берем, вот этот вот ноль два три
Михаил Непряхин: и ага да похоже на Правду. Похоже на Правду.
Михаил Непряхин: Да
Михаил Непряхин: да окей и что выглядят.
Михаил Непряхин: Какое бью У нас ээ тандем что выглядит а это вообще массив кстати до Сих пор наш То что он выглядит.
dmitriy: Были она про Него и забыл. Совсем, Так ну викс у нас Будет вот То Что вы в конце написали
dmitriy: будет ноль два три два три
dmitriy: так я еще раз просмотрел Там нас было ноль один два три
dmitriy: Дальше Мы значения никак не меняли.
Михаил Непряхин: Да.
dmitriy: А
dmitriy: викс это У нас
dmitriy: ноль два три а
dmitriy: так ну так как. Вы все У нас
dmitriy: Сынок опасности осталось
dmitriy: четыре охотиланда. Один
dmitriy: Мы Там Добавляли.
Михаил Непряхин: Но смотрят икс уже Давно викс уже Давно в этом состоянии
Михаил Непряхин: так что.
dmitriy: Да
dmitriy: а да здесь тогда он Будет скопирован отдельно
dmitriy: то есть в конце Мне кажется, что Будет но там правильно подсказывают что ноль
dmitriy: два три три потому, что у нас в эксе
dmitriy: в первом случае мы еще
dmitriy: А
dmitriy: показывали на тот массив
dmitriy: переменная
dmitriy: и мы поменяли там значение а в конце уже будет Другой, мось
dmitriy: а
dmitriy: ну будет указатель уже на Другой, массив отдельно будет создаваться,
dmitriy: вот это будут разные Массивы то и здесь мы уже
dmitriy: аа никак не трогаем массив а.
Михаил Непряхин: Так короче прогноз такой что здесь будет Ноль два три три три.
dmitriy: И сказали в чате.
Михаил Непряхин: Ммм.
dmitriy: Ноль ноль два три три.
Михаил Непряхин: Так хорошо он давайте соседи меня уж сам запутался давайте по а подумаем что что выведет, а.
dmitriy: Так на Ноль два три три потому что Но.
Михаил Непряхин: А ноль два три три.
dmitriy: Да потому Что мы еще в первом аппенде
dmitriy: еще да могли достучаться до того массива а во втором случае у нас создается уже другой. Массив и указательно другой. Массив совсем.
Михаил Непряхин: Нет смотрите
Михаил Непряхин: а Эй вообще Не мутировался Эй это орей а он как Бы
Михаил Непряхин: а так Сейчас подождите да-да он под Капотом и свайся да все правильно да-да-да я здесь сам запутался все правильно да мы же его тут меняли эти значения
Михаил Непряхин: так ноль два три три
Михаил Непряхин: ну потому, что здесь мы типа три да записали а здесь мы второй три почему записали
Михаил Непряхин: потому, что мы типа взяли икс икс был состояние ноль два три
Михаил Непряхин: сленом три
Михаил Непряхин: и сделали типа Один раса пэнт
Михаил Непряхин: и три добавился сюда
Михаил Непряхин: и изменил, изначальный массив гм а потом мы добавили еще тройку и вот здесь-то мы и разъехались
Михаил Непряхин: и Сейчас это уже вообще свой самостоятельный массив
Михаил Непряхин: а здесь
Михаил Непряхин: да и
Михаил Непряхин: под Капотом остался прежний
Михаил Непряхин: а можно.
David R: Сразу, Пока мы не Вывели результата.
Михаил Непряхин: Мне Интересно.
David R: Когда мы и.
Михаил Непряхин: Мы ссылаемся с Вами в свой указатель тому в том-то и дело, вот Даже я вот Сейчас вот на этом это смотрели я упустил, тот момент да что вот здесь вот висе
Михаил Непряхин: Мы указатель То, есть даже можно было вот вот наверное надо разделять вью вот Вью Там вот такое ну Под капотом Там будет указатель вот на этот вот не верхний мотив
Михаил Непряхин: и Поэтому наверное даже хорошо бы его тоже менять потому, что это же стоит наш да то есть это наш стейт то есть грубо говоря ну, здесь вот только ему взяли ну, уью другой то есть мы смотрим на вот здесь мы смотрим на первый элемент
Михаил Непряхин: верну вот на первый элемент это а здесь мы на третий четвертый.
David R: Не о чем-то ну тут у меня в голове немного Другая картина Что когда мы берем срез от Слайса мы получается все равно в первое Копируем Второе но из За того Что сласть под капотом Это указатель То указатель Копируется и получается То же самое
David R: А тут-то У нас мы в слайс копируем срез от массива А массива это же Не указатель А уже значение.
Михаил Непряхин: Ну, это не то что мы копируем Тут надо читать что мы не копируем мы.
David R: Что У нас есть знак присвоения То Это Не копирование.
Михаил Непряхин: Э, нет Это смотрите Это надо во Первых вот Это вот создает вью на этот вот массив то, Есть Мы создали на Него вью
Михаил Непряхин: и поместили Это в ю викс
Михаил Непряхин: несмотря на То Что, здесь да и Присваивание Ну новую Перемену все-таки Заводим Но Мы Там под капотом имеем указательно, вот тот вот изначальный вот этот вот массив
Михаил Непряхин: вот аа просто Мы смотрим на разные части вот икс смотрит на начало ну, на первый элемент он смотрит да Только вот на эту часть Вью у Него
Михаил Непряхин: вот а здесь у Него Вью ну вот на последние два Элемента
Михаил Непряхин: дальше здесь Мы аппендиум икс игрок
Михаил Непряхин: и
Михаил Непряхин: Так Давайте Еще Раз значит икс У, нас
Михаил Непряхин: сленом один значит мы будем копировать
Михаил Непряхин: перезатирать вот этот массив начиная со второго Элемента чем мы их будем перезатирать будем перезадирать Двойкой и Тройкой потому что игрок это два и три получится вот вот в Этом отмести
Михаил Непряхин: Мы делаем такую штуку два три
Михаил Непряхин: то есть Мы здесь вот изменили изначальный массив под капот Он Там Получился ноль два три три
Михаил Непряхин: а Дальше Дальше ну, а вью здесь будет да ноль два Трепнушь вот Мы на эту часть массива теперь, смотрим
Михаил Непряхин: дальше мы берем эту часть потому что их теперь, поменялся он теперь, вот такой вот
Михаил Непряхин: и в него аппенди
Михаил Непряхин: опять, два три получается Мы здесь
Михаил Непряхин: такие все-таки двойку имеем
Михаил Непряхин: и Мы получается двойка и вот эту перезатираем потому, Что, здесь лен был три значит Мы будем писать сюда Мы двойку здесь перезаотрем
Михаил Непряхин: а разве не, Создается Новый Год вот я вот я короче не, помню вот типа Он создастся
Михаил Непряхин: в момент когда Он поймет Что количество элементов У Него Не Хватает или Он создастся По Одному будет добавлять ну. Давайте простождаем как на месте разработчиков мы бы сделали
Михаил Непряхин: я бы проверил лен у того что, принимаю вот так вот теоретически я бы проверил лен и значит Я бы Не По одной бы Штуке Я Пендил и значит все-таки Мы Наверное Изначально с вами все-таки Не Будем Трогать и как Будто Там должно Остаться Ноль два - три
Михаил Непряхин: а вот здесь Мы уже получаем абсолютно другой массив и
Михаил Непряхин: Так ну и два три два или да то есть
Михаил Непряхин: здесь получается, должно быть вот так вот
Михаил Непряхин: а здесь ноль два три три ну потому что, вот это вот да
Михаил Непряхин: ну вот вопрос вопрос только в Этой двойке здесь двойка или тройка типа я думаю что он двойка не зимой.
dmitriy: Я тоже думаю что Двойка.
Михаил Непряхин: Ну вот Нет.
dmitriy: Ага.
Михаил Непряхин: Значит все таки Нет проверки на лен того Что Мы Принимаем значит вот в Этом месте
Михаил Непряхин: Мы по одному элементу добавляем то есть типа мы берем изначально вот этот вот слайс видим что у него лен три еще можем один элемент Добавить добавляем его
Михаил Непряхин: и
Михаил Непряхин: перезатираем изначально вот этот вот
Михаил Непряхин: ну он так и так он и так был три, ну мы его еще Раз, затираем в тройку значит
Михаил Непряхин: а вот
Михаил Непряхин: Так подождите а Почему общая здесь три Мы же ведь, начинаем стройки ведь, у Икса лен три значит Мы в четвертый элемент был на даче четвертый? Элемент да вот мы Тройку эту
Михаил Непряхин: ночь У нас здесь Двойка в игроке, мы должны начинать двойки
Михаил Непряхин: ну короче здесь Загадка двери
Михаил Непряхин: Мне чуть Самому непонятно Почему все-таки здесь Тройка
Михаил Непряхин: А ну потому Что. Окей Да он такой Создаю Новый
Михаил Непряхин: М
Михаил Непряхин: короче Я забыл почему здесь тройка
Михаил Непряхин: ээ ветер запутается очень легко и специальная задача на Запутывание хорошо Давайте еще Раз, внимательно Посмотрим
Михаил Непряхин: сексом вопросов Нет правильно то есть икс у нас в линия три.
Михаил Непряхин: Что мы забираем и микс изначальный икслен один
Михаил Непряхин: мы добавляем в него два элемента два три. Получается ноль два три давайте увидим здесь
Михаил Непряхин: там уже подсказали.
dmitriy: Да и.
Михаил Непряхин: Да вот то есть здесь настолько двухэтажная конструкция то есть вот надо вью
Михаил Непряхин: да видите даже вот когда записываешь
Михаил Непряхин: потому что игрек смотрит вот на этот участок а он три три Правильно
Михаил Непряхин: он три три ну и вот собственно мы этот тритрий добавляем
Михаил Непряхин: и ну все равно конечно вопрос тогда да с добавлением давайте тогда здесь
Михаил Непряхин: добавим
Михаил Непряхин: Мне просто хочется Понять э типа в какой момент происходит авокация
Михаил Непряхин: Так
Михаил Непряхин: мы просто в игроке заменим элемент
Михаил Непряхин: это какой будет элемент второй
Михаил Непряхин: а нет Нулевой элементар заменить Нулевой элемент заменим на
Михаил Непряхин: девять
Михаил Непряхин: вот и короче говоря если, здесь У нас Сейчас в игре игры получается Вот такой Вот
Михаил Непряхин: здесь Будет начинаться с Девятки и здесь тоже Девятка Будет
Михаил Непряхин: так и когда мы
Михаил Непряхин: только не в этом месте он в этом месте надо Добавить
Михаил Непряхин: вот у меня здесь вот он девятка
Михаил Непряхин: так и Вопрос в этом свайсе
Михаил Непряхин: будет конечно же. Девятка потому. Что ну. Тут-то мы добавим девять три добавляем поменяется ли в изначальном сальсе ну. Да поменяется я его и так сам тут поменял
Михаил Непряхин: ну короче ладно вот вот смотрите как бы Очень, много почвы для экспериментов как Можно поэкспериментировать еще вообще как бы классная идея
Михаил Непряхин: а что вы Ммм придумываете эээ задание для собеседования то есть вот у вас задача прособеседовать гушника да
Михаил Непряхин: и гошник. Уже выучил, вот эти вот все задачи вот там не знаю приснился эти три сдачи есть он их выучил,
Михаил Непряхин: у вас задача придумать такую задачу Чтобы Это было что. То новенькое ну Чтобы Это было вот про Это же самое но что. Нибудь новенькое
Михаил Непряхин: и вот это было дез на следующее занятие
Михаил Непряхин: короче попридумывайте задачки и там самое интересное Я думаю даже все подряд постепенно будем Решать потому что как бы, вот эта вот база основная такая штука то есть важно Иметь, терять и сдачи
Михаил Непряхин: о том что вы просто дальше первого вопроса на собесе Не продвинетесь
Михаил Непряхин: вот
Михаил Непряхин: ладно Давайте отдохнем и
Михаил Непряхин: продолжим
Михаил Непряхин: так и
Михаил Непряхин: что Еще хотел сказать про Маму про Кэш
Михаил Непряхин: так ванна Давайте Тут надо про планировщик рассказать и в следующий Раз, про мапу тут, не так сложно
Михаил Непряхин: тогда говорим про планировщик
Михаил Непряхин: да и
Михаил Непряхин: вот значит Типичный, сервер на гол. Ну Вы Же это Как бы самый Простой вариант написать сервер
Михаил Непряхин: значит если Не знаю там в Пхп Киллер Фитча это была в свое время что можно письмо отправить одной строкой то вот в Голову. По сути киллер фитча что можно написать сервер ну почти одной строкой она тут, словно как бы
Михаил Непряхин: вот Можно не обрабатывать ошибку не выводить логики и не обрабатывать здесь ошибку вот в трестаки а еще вот Это Можно сделать Тоже, функцией,
Михаил Непряхин: вот так вот Вы здесь
Михаил Непряхин: вот и вот будет
Михаил Непряхин: будет сервер одной строкой
Михаил Непряхин: плюс минус
Михаил Непряхин: короче сервера на Голову. Пишутся Реально ничего Не обрабатывать
Михаил Непряхин: вот
Михаил Непряхин: еще вот это в одну, строку можно сделать
Михаил Непряхин: ну почти почти одна строка Две строки окей ну как бы написать сервер на Две, Стальги
Михаил Непряхин: ну как, бы
Михаил Непряхин: другие языки, ну еще бы он был там Реально синхронный держал нагрузки, вот этот вот
Михаил Непряхин: вот этот вариант кода,
Михаил Непряхин: он Держит нагрузки, где-то
Михаил Непряхин: ну. Где то семьдесят к рпс то есть вот вот эта вот простая конструкция бойня Рот Семьдесят э
Михаил Непряхин: Семьдесят тысяч
Михаил Непряхин: на запросов
Михаил Непряхин: в секунду
Михаил Непряхин: Что как бы ну Прям дофига то Есть как бы если подумать а Об этом
Михаил Непряхин: Что У нас ра семьдесят тысяч Раз в Секунду кто. То обращается
Михаил Непряхин: то У как возникает вопрос а как Это работает
Михаил Непряхин: Уж. Если Мы Возьмем какой-нибудь эпачей сервера да там самый древний то там на каждый запрос создается отдельный ну форкается процесс
Михаил Непряхин: и создается свой поток в процессе для обработки этого Запроса
Михаил Непряхин: и ну Если, мы семьдесят тысяч потоков. Будем создавать Секунду ну во-первых Линукс так быстро. Не насоздается только ну он очень быстро. Умрет
Михаил Непряхин: вот если говорить если посмотреть а кто умеет так так умеет инженкс то есть и
Михаил Непряхин: си и у него похоже как бы идеи очень похожие с гол. Поэтому Он Тоже. Так Умеет
Михаил Непряхин: а Но это Все-таки си и Там Так просто ничего Не Написать Не на инженгге. Это просто проксисервира а там Конфликт Какой есть такой есть а здесь, все-таки Конференция
Михаил Непряхин: и и
Михаил Непряхин: си плюс плюс либо. Подобное Ну в общем то на Расте тоже Есть а там три варианта
Михаил Непряхин: два как минимум варианта тоже Раз
Михаил Непряхин: У сервера на расте
Михаил Непряхин: и ну. Там цифры тоже будет чуть побольше там будет что-нибудь около. Ста пятидесяти карпеса ну и здесь тоже будет что-то около.
Михаил Непряхин: Ста пятидесяти рпс ну я Имею в виду если запускать вот просто на вашем железе плюс минус
Михаил Непряхин: на самом деле и гоу тоже сопоставимо может выдать эти сто пятьдесят карпов
Михаил Непряхин: Для этого есть сервер написанный максимально оптимальным образом называется
Михаил Непряхин: фасо Дтп
Михаил Непряхин: значит есть вот разработчик,
Михаил Непряхин: вальява Ну Там у него фамилия вальякин что ли как то так
Михаил Непряхин: а двадцать Две тысячи звездочек то есть
Михаил Непряхин: популярный популярный популярная популярная библиотека
Михаил Непряхин: ханда написано Сто процентов на гол и вот она выдает в Принципе этот сервер выберет Тоже. Около, ста пятидесяти карпеса то есть Сопоставимо с плюсами и с Растом Он просто не Рекомендуется его использовать потому что
Михаил Непряхин: когда вы начинаете все делать в оптимизацию вы уродуете код и это как бы неизбежно то есть там например, под капотом и
Михаил Непряхин: на конвертациях Там много ансейфа Используется Там переиспользоваться пулы и так далее ну короче говоря и
Михаил Непряхин: а вот до десяти типа Раз, быстрее чем, обычный энерго Дтп, антон и Дтп, Это имеется в виду вот Наш стандартная библиотека на Дтп,
Михаил Непряхин: вот Поэтому Рекомендуется использовать просто обычный
Михаил Непряхин: сервер ну минус в том Что У него с роутингом не очень все хорошо и Поэтому роутинг обычно используем другой Я рекомендую использовать чи Роутер
Михаил Непряхин: а что библиотека чии
Михаил Непряхин: чероутер и раз называется роутер на самом деле как бы нас Интересует ну тоже популярный доволенский двадцать тысяч Звездочек нас больше всего интересует именно роутинг то есть как бы
Михаил Непряхин: и не очень удобно в стандартном сервере и
Михаил Непряхин: вот
Михаил Непряхин: значит как же, это достигается черт побери в гол, достигается Это ну. Собственно во всех. Этих вариантах с Помощью так называемых
Михаил Непряхин: а
Михаил Непряхин: кортин
Михаил Непряхин: и или
Михаил Непряхин: конкарантии
Михаил Непряхин: или Оно же синхронность многопоточная то есть Кооперативная многозадачность
Михаил Непряхин: и
Михаил Непряхин: что это такое еще гринтре это называют зеленые потоки
Михаил Непряхин: для того чтобы понять
Михаил Непряхин: что это
Михаил Непряхин: нужно немножечко разобраться как устроен планировщик в операционной системе Мы будем говорить про линукс потому что нас интересует
Михаил Непряхин: Только лину послушно сервера работает лингс
Михаил Непряхин: вот и
Михаил Непряхин: Мы сейчас порисуем немножко
Михаил Непряхин: опять же Там этот компьютер сайнс это все очень сложно Там куча оптимизации нам, важно понимать Не просто вот на каком-то бытовом Уровне, минимально какие-то ключевые особенности планировщика
Михаил Непряхин: чтобы Не сесть в лужу на Собеседование
Михаил Непряхин: ну. И для жизни конечно Тоже это как Бы неплохо понимать знать это Поэтому в Принципе тут двух зайцев мы убиваем
Михаил Непряхин: да значит во Первых нужно понимать что вот есть физическое ядро процессора
Михаил Непряхин: Ну как бы каким. Он интересовался да распию
Михаил Непряхин: и память
Михаил Непряхин: оперативные
Михаил Непряхин: и надо понимать Что Мы доступы напрямую к ней не Имеем вообще Никогда Мы Всегда работаем с пью и с памятью через прослойку
Михаил Непряхин: блинкся ну, словно зовем
Михаил Непряхин: ядро. Линукса.
Михаил Непряхин: Вообще в операционной системе мы разделяем и
Михаил Непряхин: оно выполняет только привилегирован как бы мы не имеем туда доступа мы только можем торчат ручки и можем какие то системные вызовы делать вот а мы работаем в юзер спейсе
Михаил Непряхин: и это, вот еще одна абстракция то есть вот мы грубо говоря в своем нью-йорке спейси говорим сделай нам что-то и вот Таким образом можем достучаться ну Или Мы просто говорим выполняя нашу программу,
Михаил Непряхин: и она у нас выполняется и Там имеет доступ к памяти или Мы допустим Хотим, что-нибудь записать на диск Мы просто говорим системный вызов запиши нам что-то на диск и Там оно записывается
Михаил Непряхин: и дальше Так как Мы не одни
Михаил Непряхин: вы в операционной системе
Михаил Непряхин: а вообще как бы изначально сипью был Один
Михаил Непряхин: и фишка в том что и
Михаил Непряхин: к этому компьютеру То есть эти большие компьютеры имел доступ имел доступ большое количество Людей и они просто ставили задачу на выполнение и они там постепенно выполнялись и как бы эта же Идея потом перенеслась и в линокс и Идея в том Что У нас
Михаил Непряхин: есть иллюзия Что программа Выполняется Одновременно Но на самом деле когда У нас Салоги на одно, Иного Процесса программы Выполняются Не Одновременно
Михаил Непряхин: а они все равно выполняются по очереди но так. Как Это происходит быстро у нас иллюзия Что Это происходит Одновременно как Это достигается Это достигается за счет Планирования
Михаил Непряхин: аа то есть Операционная система сама говорит сколько Времени, какая Программа, должна поработать то есть ну там условно ноль две секунды то есть вот дается ноль Две Секунды ну или то Же самое Что двести Э милли Секунд
Михаил Непряхин: и Программа, вот мы ее Запустили Она У нас бинарник запустился и
Михаил Непряхин: вот
Михаил Непряхин: что еще важно понимать когда мы запускаем
Михаил Непряхин: наш бинарник
Михаил Непряхин: в линусе то создается процесс
Михаил Непряхин: а как бы первый абстракт это процесс
Михаил Непряхин: а но не процесс исполняется Физически на игре а трэд
Михаил Непряхин: то есть в этом процессе обязательно как, минимум есть один, тренд
Михаил Непряхин: и вот этот ретт и является, единицей выполнения на камне
Михаил Непряхин: и и
Михаил Непряхин: он должен быть как минимум один но когда мы запускаем Наш, губинарный код он возникает этот ретт и Там программа выполняется
Михаил Непряхин: вгу У нас По количеству ядер поднимается Количество тредов
Михаил Непряхин: но если Мы возьмем классическую какую-то программу ну вот поднимается трое допустим если Мы берем апачего тот же какой-нибудь сервер
Михаил Непряхин: пришел один запрос
Михаил Непряхин: а поднимается еще один тред
Михаил Непряхин: и этот запрос выполняется
Михаил Непряхин: это втрадья Пришел Еще один запрос Еще один ряд поднимать цветы они Там параллельно, выполняются Ну, как параллельно,
Михаил Непряхин: а если У нас одно, ядро, процессора То вовсе не параллельно, а там один тред поработал
Михаил Непряхин: ну может быть не ноль две секунды поменьше другой трек проработал там ноль две секунды третий трек Поработал ноль Две, Секунды вот и Поэтому
Михаил Непряхин: как бы Количество трудов, когда Мы пладим
Михаил Непряхин: Мы и
Михаил Непряхин: вот значит Ммм вот этот вот процесс когда Мы
Михаил Непряхин: Даем поработать Одному Тряду, Снимаем его проходит время Персон его снимает и дает поработать Другому на Другом Траде и Это называется вот сам процесс Перехода называется контекст Свич
Михаил Непряхин: что происходит При смене контекста
Михаил Непряхин: ну смотрите для того чтобы просто вот тренд работал на процессоре нужно загрузить регистры нужно Там есть несколько регистров ну самый. Главный это регистр. Начала астека где у нас в каком состоянии стек указательно стек
Михаил Непряхин: Э нужно загрузить какую-то минимальную ну Вот То что Мы Сейчас чтобы начать выполнять Инструкцию нужно загрузить Эту Инструкцию из памяти
Михаил Непряхин: да У процессора есть Кэш Там Или один. Или два Или три то есть разные уровни ишей
Михаил Непряхин: и и
Михаил Непряхин: то эти пиши вымываются и потом при приключении контекста нам снова надо эти шиши опять. Из памяти Загружать а это долго Поэтому конечно круче когда бы у нас Один. Процесс очень долго Работал на одном и
Михаил Непряхин: чем когда Мы вот то на одном Труде поработаем то на Другом Труде поработаем короче неэффективно
Михаил Непряхин: есть такая оптимизация
Михаил Непряхин: давно Которое кстати возникло называется
Михаил Непряхин: а Гипертрейдинг Гипертрадинг
Михаил Непряхин: Хайпер Трейдинг
Михаил Непряхин: короче когда покупаете процессор
Михаил Непряхин: то У процессора обычно в названии Ну типа как и
Михаил Непряхин: а физических шестнадцать как же так получается реально физических ядер шестнадцать но производители Процессоров пишут тридцать Два потому. Что технология гипертрейдинг
Михаил Непряхин: а Она умножает физические ядра на два
Михаил Непряхин: получается тридцать два логических и как Будто бы у нас в два раза больше я ядер
Михаил Непряхин: что это такое такая хитрая оптимизация зачем Она нужна
Михаил Непряхин: значит просто добавляются дополнительные реально физическое ядро вот оно Одно, но добавляется вот немножечко регистров которые Позволяют
Михаил Непряхин: Э Одновременно на одном ядре Работать двум Тредом то есть и Этот Рет может Работать и Этот ряд может Работать
Михаил Непряхин: Если они делают, какую-то работу называемую сипию баунд то Есть ну уважение там Склярное перемножение То Есть Работают с Числами Прям
Михаил Непряхин: То Проку От этого Не будет Потому что. Ну Регистры которые Этим занимаются они все на одном мидре Поэтому ну вот тут, все равно будет очередь этот будет работать один какой-то тред а второй будет ждать,
Михаил Непряхин: это как бы называется такая такой тип Нагрузки называется сипию баунд
Михаил Непряхин: и и
Михаил Непряхин: вот а есть ли у вас характер Нагрузки айо баунд то есть это их два всего
Михаил Непряхин: аю Баунти
Михаил Непряхин: то есть айоу имеется в виду работа с сетью
Михаил Непряхин: то ну вот сервера они же в основном сетью работают то вот здесь вот эта оптимизация работает потому что мы по большому счету занимаемся тем что ждем
Михаил Непряхин: вау баунди
Михаил Непряхин: то есть мы сделали запрос в сеть Сидя эта Жуткая. Медленная штука Мы ждем ответ. Мы Там, сделали хэндшейк Мы ждем ответ. Мы сделали запрос Мы ждем и там много как, бы этапов где надо ждать
Михаил Непряхин: и вот в таком. Случае это дает выигрыш
Михаил Непряхин: и
Михаил Непряхин: и вот подобное что там
Михаил Непряхин: то есть это как бы оптимизация на уровне операционки
Михаил Непряхин: и и
Михаил Непряхин: подобная же Идея она и в гоу реализована только как бы на более продвинутом уровне
Михаил Непряхин: значит как это работает в гол
Михаил Непряхин: гол вот если, у Нас Один цепию процессора гол не, поднимает на каждый запрос свой тред го работает в одном трезе
Михаил Непряхин: поднял Один Тред гол
Михаил Непряхин: и все и он в нем работает
Михаил Непряхин: и
Михаил Непряхин: все вся Моя ну как вся Работа она происходит Внутри этого тререда
Михаил Непряхин: что Мы получаем Мы получаем экономию на Контекст свечи
Михаил Непряхин: То есть на переключении контекста Мы очень много экономим потому что ну там ванна крыши это отдельная история потому что даже в этом случае коши вымываются вот но Мы Экономим над Тем что
Михаил Непряхин: операционная система переключение между рядами Делает ну. Супер медленно
Михаил Непряхин: Мы Можем просто взять один элемент ну. Там несколько элементов Самых важных Которые нам нужны
Михаил Непряхин: ну. Что самое главное самое главное это выгрузить Текущий Текущий стек из регистра, в процессах и загрузить другой стек и вот это вот такая возможность нам портянку ее предоставляет Поэтому Мы просто внутри нашего Треда можем
Михаил Непряхин: сымитировать
Михаил Непряхин: как Будто бы переключение на Другой тред но остаться в рамках одного Тренда то есть вот Идея гоу в этом что, Мы экономим на Контексте свеча очень много экономим ну то есть Там настолько много что, это прямо,
Михаил Непряхин: и имеет смысл ну и плюс Там когда Мы поднимаем тред и
Михаил Непряхин: ну короче Там Операционка Же за Ним следит и как Бы это просто много ресурсов а когда Мы сами Там следим да нам приходится писать свой планровщик То это получается быстрее ну а когда спрашивают Задают вопрос то вы просто говорите контекст свич
Михаил Непряхин: контекст вич переключение контекста то есть Разница между реальными тредами операционной системы и так. Называемыми корутинами Или гринтредами в том что эти курортины Или гринтреды они работают вот Там внутри
Михаил Непряхин: и если этих вот реальных тредов Мы не можем поднимать Десятками сотнями Тысяч то вот эти вот Корутины зеленые Отреды Мы можем поднимать просто Десятками сотнями Тысяч внутри одного труда
Михаил Непряхин: вот в этом основная идея
Михаил Непряхин: и и
Михаил Непряхин: кооперативной многозадачности
Михаил Непряхин: а вот это вот называется
Михаил Непряхин: вытесняющая многозадачность то есть как бы вообще вот ну две идеи есть По многозначности это вот вытесняющую многоздачность та которая влинуся в профессиональной системе ну и в Инде тоже ну винтаж заинтересует как нас начался длиннокс
Михаил Непряхин: и кооперативная многозадачность она же кан карнси которая реализована в гошке ну и в том же джинсы-инвое и все остальное чтобы это Было быстро это только через это реализует
Михаил Непряхин: и
Михаил Непряхин: дальше.
Konstantin: А может быстренький, вопрос.
Михаил Непряхин: Да давайте у, вас вопрос есть хотим? Мы здесь сразу давайте.
Konstantin: Да мальчик. Он вылетел с головы.
Михаил Непряхин: И и.
Konstantin: Да и.
Михаил Непряхин: Да да да то есть смотреть один к одному вот как бы
Михаил Непряхин: чтобы оно работало эффективно,
Михаил Непряхин: и нужно
Михаил Непряхин: чтобы вот в момент времени было количество отрядов равно количеству сипию если у нас шестнадцать -ю будет шестнадцать родов
Михаил Непряхин: их на самом деле вот как бы это имеется в виду в моменте вот Что будет загрузить в театре процессора вот в моменте Одновременно будут работать шестнадцать родов но на самом деле гошка будет их поднимать больше потому что какие то ряды будут ждать например если вы с диском Работаете
Михаил Непряхин: а здесь работать Можно только Синхронно ну не знаю может Там, какие-то есть уже насчет синхронной работы с Диском я такого не слышу но вот с Диском Мы например, на каждую операцию Там чтение записи диска Мы поднимаем свой собственный тред
Михаил Непряхин: и он просто вот ну вот Реально поднимается под каждую эту операцию и вот ждет пока он там не прочитает Или Еще что-то а потом когда прочитают то будет работать но вот именно работать здесь и Сейчас в момент времени будет количество трудов по количеству сепеюянер
Михаил Непряхин: этот параметр, настраиваемый и мы можем сказать что несмотря на то что нам, доступно шестнадцать дядя Сапию пожалуйста, работай все равно в одном
Михаил Непряхин: это Единственная Строка которая у нас есть единственное чем, можем управлять.
David R: Можно вопрос тоже по Предыдущей теме у нас получается если Запущено приложение госное приложение то оно занимает Один процесс внутри одного процесса Есть Один. Поток и Внутри Этого одного Подка Потока Мы можем запускать Сколько угодно карутин.
Михаил Непряхин: Процесс процесс один все таки бот это все в одном.
David R: Процентов да-да-да ну процесс Будет один атракт один процесс приложения и внутри приложения Должен быть как минимум один поток.
Михаил Непряхин: Да.
David R: И в этом одном, единственном Потоке ну допустим один единственный поток и Внутри этого Потока Мы можем запускать Сколько угодно гол, рутин.
Михаил Непряхин: Да сколько угодно.
David R: Вот и тут вопрос если у, нас железо одна ядерная то э
David R: приложение гошное оно может это ядро захватить и Удерживать Или все Таки Линукс все равно будет принудительно переключать Контекст и Отдавать время и другим приложениям тоже.
Михаил Непряхин: Конечно совершенно верно никто Не может Удерживать из юзерс спейса и никакое ядро линуксал ему дал поработать столько дал
Михаил Непряхин: то есть мы изначально имеем дело
Михаил Непряхин: с как бы сказать хозяином системы, увидели нукса и драллингса и вот сколько нам дадут поработать столько Мы поработаем
Михаил Непряхин: Поэтому мы изначально живем вот в Этой парадигме
Михаил Непряхин: что да вот здесь Внутри у нас будет кооперативная многозадачность но она выполняется внутри планировщика которая имеет вытесняющую Многозначность
Михаил Непряхин: а никто Не может взять и захватить ядро. Вот сколько линукс дал, поработать лину сказал хватит и в этот момент Мы просто все сворачиваем и отдаем ресурсы линуксу ну он сам заберет
Михаил Непряхин: не все и он там делает все что хочет вымывает наши каши и работает сколько угодно Времени занимается Своими делами и если у него, есть какие-то более приоритетные вещи и пока нам обратно Не отдадут возможность поработать мы тут это так и будем ждать, да.
David R: А и.
Михаил Непряхин: Да да да верно.
David R: Все Окей Понял.
Михаил Непряхин: Да
Михаил Непряхин: то есть вот по Сути планировщик линукса занимается тем что у него, есть вот эти треды
Михаил Непряхин: и просто, он одному утверждал. Поработать в следующем Году туда проводить следующему Отряду, порыв все каруселька Такова там то по птице крутится.
Михаил Непряхин: То есть как бы абстракция простая и
Михаил Непряхин: быстрый конечно Но это будет Не Гибко и Не получится вот Так вот Писать программу как раз Можно ногу.
Илиас Эззахид: Сложный вопрос.
Михаил Непряхин: Да здравствуйте.
Илиас Эззахид: А в голландии Можно Там. Форкнуть процесс это работаешь работать. С тредами и с Процессами напрямую.
Михаил Непряхин: Нет нельзя у нас Нет такой возможности вот особенность гоу что, Мы не управляем вот этим вот как оно там под капотом работает это то Есть вот если в других языках
Михаил Непряхин: у нас Всегда Есть возможность поднять тренд Прям Есть такая инструкция здесь нет Мы только можем создать зеленый поток внутри
Михаил Непряхин: а вот ну и сказать Сколько всего будет этих отрядов поднято не то Что поднят отрядов а Сколько Одновременно отрядов бодрого От Него
Михаил Непряхин: все остальное никакого влияния ничего Не можем оказать все работает Романтически.
Илиас Эззахид: А Следить можем то есть Это как Мужем Метрики.
Михаил Непряхин: Можем и есть есть метрики да все можем Отследить а можно посмотреть вплоть там Прямо вообще до тончайшей работы и гарбочкой лекторов и сколько он Раз, запускался что делал. Все можем да
Михаил Непряхин: профилирование очень хорошее в Голову. Все можно посмотреть
Михаил Непряхин: так и у обамы От Этого чтения и записи нет а его баун когда Я Говорю его баун Это все-таки сеть
Михаил Непряхин: и Как бы, Да конечно диск Это Тоже егобан Но
Михаил Непряхин: Мы тут. Говорим если Сипью Баум значит Не знаю матрица Переумножаем на процессоры если айо баун это сервер сеть
Михаил Непряхин: Да и
Михаил Непряхин: так на состоянии нашего приложения в кэше будет
Михаил Непряхин: ну, имеется в виду, вот кэше процессора у которого процессов конечно ну, конечно как бы он же все же через какие-то проходит потому что если Мы тут делаем запрос в памяти Ну Он хоть как в киеве окажется
Михаил Непряхин: и если Контекст переключится и
Михаил Непряхин: да
Михаил Непряхин: да дальше
Михаил Непряхин: значит Теперь Мы говорим про юзерс пейс
Михаил Непряхин: Теперь Будем, говорить вот про Эту часть ну Смысл вот про всю Эту часть то есть планировщик вот мы с Ним Определились поняли Что он вытесняющий. Мы в нем работаем
Михаил Непряхин: значит то есть У нас есть
Михаил Непряхин: еще одна абстракция
Михаил Непряхин: кроме планировщика линукса. Давайте теперь там нарисуем
Михаил Непряхин: Два физических
Михаил Непряхин: ядра процессором
Михаил Непряхин: там память Куда там
Михаил Непряхин: и еще про память надо сказать что вот когда мы в процессе находимся то все треды они разделяют общую память которая вот память на процессе то есть процесс нужен для того
Михаил Непряхин: чтобы вот У нас вот этот Кусочек памяти У нас был
Михаил Непряхин: и все отряды с этой памятью могут работать.
Михаил Непряхин: А
Михаил Непряхин: ну она даже не буду рисовать этот Кэрн ээ и Из ронукса? Вот просто имеем в виду Что, оно Там, есть
Михаил Непряхин: так
Михаил Непряхин: значит когда Мы понимаем поднимаем приложение
Михаил Непряхин: гошная нас поднимается Один, процесс
Михаил Непряхин: в процессе Вот у нас Два ядра была
Михаил Непряхин: Два троллинукса в процессе у нас поднимется Два треда
Михаил Непряхин: условно и там больше но Одновременно будут работать только; Два
Михаил Непряхин: а угу.
Михаил Непряхин: Дальше значит Есть Э
Михаил Непряхин: для Планировщика гошного Есть такая модель про которую Ну Это Синьорные Вопросы, но там, Что нибудь может такое зайти Поэтому лучше бы ее знать значит джемпи
Михаил Непряхин: джиэмпи модель значит джи Это гуртина
Михаил Непряхин: м это машин
Михаил Непряхин: а ты
Михаил Непряхин: процесс
Михаил Непряхин: нуджи гортин
Михаил Непряхин: и машин это
Михаил Непряхин: абстракция которая прибивается к Треду, Два труда у нас поднимается ну. Два едва не троси пью два три да
Михаил Непряхин: и вот машина она вот это то Что в текущий момент работает то есть по Сути м это равно трэд машин равно трэд
Михаил Непряхин: почему его Бы Не назвать тренд непонятно Загадка назвали машин
Михаил Непряхин: Ну может быть имеется в виду Что типа Раз, это прибивается, напрямую к рядам процессора и
Михаил Непряхин: дальше значит на машине могут работать пи
Михаил Непряхин: процесс
Михаил Непряхин: а но они могут и сниматься то есть вот процесс Поработал например если это Чтение. Запись диска
Михаил Непряхин: бах попали в Чтение. Запись диска это синхронная операция,
Михаил Непряхин: пи снимается
Михаил Непряхин: ждет пока Там прочитается Или Запишется на диск
Михаил Непряхин: и сюда приходит Другой, пи который работает потом этот поработал обратно поставите на выполнение, и Будет работать,
Михаил Непряхин: а значит а вот на этих вот процессах уже работают, гурутины
Михаил Непряхин: джой наши Маленькие
Михаил Непряхин: и вот эта вот очередь которая То, есть гуртины они живут спи с процессом
Михаил Непряхин: а вот эта вот очередь называется, локальная очередь
Михаил Непряхин: Раз есть, вокальная значит еще глобальная да значит еще глобальная очередь
Михаил Непряхин: вообще есть, разные планировщики. И на самом, деле с глобальной очередью почему нельзя работать в глобальном очередь потому, что, медленно получается потому, что если, мы начинаем работать с глобальной очередью вот если, вот этого бы Не, было
Михаил Непряхин: а процессы ходили бы в глобальную очередь и брали бы здесь свои джи
Михаил Непряхин: то нужен был быютекс грубый мюток с неизбежный
Михаил Непряхин: и Раз мью значит медленно вот для того чтобы вот этот миюкс ээ не использовать минимизировать
Михаил Непряхин: а сделали просто У
Михаил Непряхин: как? Бы вот такую лок Фри структуру Что просто У Каждого пи. Есть, своя очередь буртин и они Там работают
Михаил Непряхин: Что такое гурутина значит ну во Первых Это то же самое Что
Михаил Непряхин: грин рэд
Михаил Непряхин: то есть зеленый поток почему зеленый ну потому что как бы Это Премумуляция тряда Но Легковесного ряда да это абстракция внутри труда то есть это не трат операционной системы это наш собственный Тред внутри нашего бинарника нашего ронтайма
Михаил Непряхин: к Слову обо всем. Вот Этом вот
Михаил Непряхин: да
Михаил Непряхин: Паперчонка Не знает,
Михаил Непряхин: для Персонки на Процессе выполняется просто что-то ну то есть Там в третье что-то выполняется ну что-то работает и вот эта вся машинерия она в операционной системе Не вида просто, какая-то Программа, работает но что-то там делает вот а это все внутри то есть еще один планировщик над операционной системой который внутри
Михаил Непряхин: вот значит это же самое гринпис называется коурутин
Михаил Непряхин: ну. Оно же со Программа,
Михаил Непряхин: вот и
Михаил Непряхин: Из особенностей У него У Этой горутины У этого ротса программы. Свой стек есть
Михаил Непряхин: то, есть У каждой гуртин есть свой стек
Михаил Непряхин: маленький ну не помню начинается с четырехкилобает вроде бы
Михаил Непряхин: а вот операционный системы, побольше он хоть, там виртуальный метро побольше выделяется изначально вот здесь он начинает с четырехкилобает и постепенно расширяется по мере необходимости
Михаил Непряхин: и вот именно, Поэтому что у каждой то есть по сути Единица выполнения в
Михаил Непряхин: гошином Ронтами в гол, это вот эта. Вот гуртинка то есть такая Маленькая. Программка со Своим стеком Программа, в программе которую вот планировщики Ставят, на выполнение вот эта грутинка первая вот она поработала
Михаил Непряхин: да и
Михаил Непряхин: а
Михаил Непряхин: и
Михаил Непряхин: получила блок на
Михаил Непряхин: айо то есть например, ну надо что-то сеть отправить все значит она становится назад ждет
Михаил Непряхин: и работает эта буратинка а пока там они работают дойдет опять до Этой картинки и там уже и какое-нибудь событие на соки придет разблокируется и Можно будет снова поработать и вот она такая каруселька только Не То чтобы вен-луп как в все шарпе или да в чем угодно в Других языках
Михаил Непряхин: когда один есть общий воен клуб и он просто вот ставит программу вот так вот на выполнение здесь как бы Он такой более сложный более оптимизированный то есть, как бы это самый, оптимальный. Вообще планировщик вот из того что есть
Михаил Непряхин: м-м здесь очень и очень-очень-очень-очень много Оптимизаций то есть мы говорим только о каком-то базовом уровне Базовых понятиях чтобы минут можно было разговор если чего понять и Поддержать
Михаил Непряхин: и значит почему вообще это так создано почему так придумано
Михаил Непряхин: Аа для этого нужно понимать особенность айоу баунда
Михаил Непряхин: Нагрузки имена на айо
Михаил Непряхин: то есть навод вывод характерную для сервера
Михаил Непряхин: а значит смотрите если Мы вообще возьмем
Михаил Непряхин: а как Выполняются запросы
Михаил Непряхин: вот значит Пришел первый запрос
Михаил Непряхин: как он
Михаил Непряхин: работает на сервер к нам Пришел работать работать работать ждет ответа
Михаил Непряхин: аа Раз он ждет он уже процесс не загружает. Мы его можем поставить на паузу
Михаил Непряхин: и дать. Поработать Второму
Михаил Непряхин: запросу вот он опять, Поработал опять, ждет от сети ответа можем опять вернуть первому он опять по работу поработал а тут и второй заводился, и опять второй поработал поработал и его так их может быть хоть, десять тысяч
Михаил Непряхин: Вот они так будут тут между Собой Вот так Вот Внутри Треда ну Ты отряд нарисовал да
Михаил Непряхин: Вот они так внутри Иряда физические, на Процессоры работают работают
Михаил Непряхин: вот и Поэтому это эффективно а если бы этого не Было
Михаил Непряхин: ну это просто простаивал бы тогда то есть у нас э вот когда у нас в одном трейде только один запрос обрабатываться то у нас были бы вот такие вот пустые места вот он ждет ответ. Сети ничего Не делать, на Процессоры
Михаил Непряхин: Это все он ждал все Один. Же потом Пришел какой-то ответ а потом Опять, поработал Опять, ждет
Михаил Непряхин: и там по меркам процесса он ждет вечность то есть это я он короткий такие вот нарисовал как Бы Это дыры а на самом деле там реальность Это футбольные поля То есть там Это чуть-чуть только на процессе репроводов ждем вечно ждем
Михаил Непряхин: и вот из-за такого. Характера, нагрузки даже на одном Генрисе пью то есть на одном запущенном Треде Мы можем обрабатывать Там ну может Быть не семьдесят тысяч прессы
Михаил Непряхин: тридцать тысяч рпц можем Обрабатывать легко но если мы в Этом ничего не делаем
Михаил Непряхин: вот и вот это характер нагрузки аю у баунд
Михаил Непряхин: и в этот Момент Времени ничего нельзя больше Делать некоторые процессы даже если у нас есть тут Гипертрейдинговые эти регистры у нас реально тут Два потока
Михаил Непряхин: то есть первый поток он перемножает матрицы а второй поток будет ждать но он все равно ничего не может сделать Потому что Пока там этот не отпустит Пока он не закончится Своим Преображением матрос, Мы ничего сделать не можем
Михаил Непряхин: вот Поэтому обычно
Михаил Непряхин: ну как бы вот
Михаил Непряхин: и если у нас есть какой-то сибирь. Убаум то обычно это Делать сообща
Михаил Непряхин: Там на отдельном железе которая предназначена только для этого а на ее баунде У нас ну на обычных серверах обычно Там какой-то жесткой Сепию на Русских обычно Нет Мы Там просто. Получаем запрос и отдаем ответы и все как бы, ходим в базу, то есть в базу, идти тоже сеть сеть сететь
Михаил Непряхин: Вот а когда у нас все эти сеть то, вот вот эта вот панировщик очень, хорошо себя показывает
Михаил Непряхин: а вот
Михаил Непряхин: есть ли тут Вопросы, на текущий момент
Михаил Непряхин: все понятно
Михаил Непряхин: ну, и
Михаил Непряхин: и понятно что изначально это понятие корутина сопрограмма и в каком-нибудь Отлине это так и называется коррутина но то есть просто типа остроумно коррутина а если наджи заменить ведь и
Михаил Непряхин: гору тебе прикольно Же Он вот Так и Получилось
Михаил Непряхин: ну и Грин трэт Тоже, Тоже типа
Михаил Непряхин: Так тут, прямо, понятно, все вопросов совсем Нет
Михаил Непряхин: оно на самом деле вот аа ну тут, Говорить можно Чего еще добавить
Михаил Непряхин: когда мы
Михаил Непряхин: какую нибудь
Михаил Непряхин: то и иногда грутины из вокальной очереди уходят в глобальную очередь
Михаил Непряхин: например,
Михаил Непряхин: а
Михаил Непряхин: тик есть еще тик тик то что. За тик за пояснительную программу
Михаил Непряхин: Ну а
Михаил Непряхин: например, Мы попадаем в ньютокс вы попали в мюдекс
Михаил Непряхин: и по моему Ну короче не помню какие ситуации но вот По моему примютоксе, она не в конец очереди попадает а в глобальную очередь попадает
Михаил Непряхин: и
Михаил Непряхин: ну Хорошо не помню там еще Есть какие то ситуации когда мы попадаем в глобальную очередь
Михаил Непряхин: и в глобальной очереди тоже грузины копятся, и когда наверняка
Михаил Непряхин: каждый вот здесь вот какое-то Неровное число итерации Не помню, какое там число ну пока сорок Два Напишем, ну какое-то Неровное число
Михаил Непряхин: то есть вот здесь вот цика условно да
Михаил Непряхин: и допустим каждый сорок второй цикл. Процесс идет в глобальную очередь и берет гору тину отсюда и начинает ее выполнять
Михаил Непряхин: то есть вот это первый момент
Михаил Непряхин: что Иногда гурутины
Михаил Непряхин: утекают в процессы убегают попадают в глобальную очередь
Михаил Непряхин: и каждый вот этот процесс их Тут тредов может быть подняты по количеству ядержек и
Михаил Непряхин: ну естественно здесь мюдекс есть потому что иначе никак нужна синхронизация и Поэтому и
Михаил Непряхин: неровное число нужно для того чтобы вот Это минимизировать вот эти конфликты и попадание в мюзикл может как я в прошлый Раз, говорил мьюток связнул чрезвычайно медленно.
Илиас Эззахид: Можно, вопрос.
Михаил Непряхин: Да.
Илиас Эззахид: Так ээ я так понимаю что мютаксы это способ аа синхронизации этих гуручин
Илиас Эззахид: эээ и го эти каналы это тоже абстракция чтобы контролировать синхронизировать гору тины а можно ли Использовать обе этих абстракций. Прямо, вместе как-то Их
Илиас Эззахид: обычно это Делают или просто либо используют метаксы либо каналы в этом вопросе.
Михаил Непряхин: Под капотом в каналах мюдекс
Михаил Непряхин: вот ответ. На этот Вопрос Мюта кстати так если вы начинаете использовать канавы
Михаил Непряхин: Ну, там Виток Под капотом в Это все, просто.
Илиас Эззахид: То есть каналы Это по существу абстракция над методами.
Михаил Непряхин: Да я по сути просто абстракция и
Михаил Непряхин: по другому никак
Михаил Непряхин: вот
Михаил Непряхин: ин
Михаил Непряхин: апотик продиктова вопрос я так я так и не понял, что за тик
Михаил Непряхин: есть же шутик вот это
Михаил Непряхин: песня.
Илиас Эззахид: Если что Прыгнул Это в но Джейси в энджикце есть дексик Это когда мы Прыгаем в другой Это ну, по Сути вент-луп это Же цикл, вешанный и неэкстриг это по Сути инкриминирование.
Михаил Непряхин: Ммм
Михаил Непряхин: окей и вот значит первая оптимизация что у нас есть, локальная глобальная очередь для того чтобы минимизировать ньютокс
Михаил Непряхин: и второй момент значит что, происходит когда вот здесь рутины кончаются ну то есть просто
Михаил Непряхин: процесс взял их все выполнил.
Михаил Непряхин: Мы этот процесс просто, воруют
Михаил Непряхин: и из соседнего процесса половину горутин то есть он просто, идет к Соседу, берет половину и начинает их сам выполнять
Михаил Непряхин: и вот
Михаил Непряхин: это все
Михаил Непряхин: что нужно для того чтобы это минимально работало то есть вот это все глобальные идеи которые ну вот которые нужно понимать ну по мне Даже немножечко Проще чем
Михаил Непряхин: а хашмапы кошмапы все-таки посложнее Но тем Не Менее конечно я все равно тоже там скину Сымочки которые надо будут посмотреть, для того чтобы вот Это вот таки зафиксировать
Михаил Непряхин: а
Михаил Непряхин: вот.
David R: Можно в вопросе.
Михаил Непряхин: Да.
David R: На уточни уточняющий допустим у нас есть Там супер крутой север у которого, Там девяносто шесть ядер девяносто шесть потоков. Все крутится вертится и Мы добавляем Куда то Там на какую то переменную метакс если. Мы добавляем юдекс получается эта перемена Встает. В глобальную очередь
David R: Из девяносто шести Потоков. Девяносто шести ядер Ну
David R: может одна моментная это все исполняться Только в одном Потоке так.
Михаил Непряхин: А такое может смотрите насчет встает ли он в глобальную очередь об Этом я могу вам наврать то есть я точно Сейчас Не помню в каких случаях в глобальная очередь уходит прям вот вот просто каждый раз забываю
Михаил Непряхин: но остальное верно короче мы.
David R: Если Мы Вешаем и.
Михаил Непряхин: Да да совершенно верно то есть если ну. Конечно у вас могут быть разные яро Задействованы на разных частях программы Но если мы говорим что это прямо, Вот суперсервер на которой очень большой рпц идет, и
Михаил Непряхин: в вообще все потоки работают с одним Куском кода и в этом коде есть Метакс
Михаил Непряхин: все то есть они все упротся это будет бутылочное горлышко что в один момент времени. Допустим это мюток на запись
Михаил Непряхин: что в один момент времени. В нью-йорке, может быть только один поток
Михаил Непряхин: все все остальные девяносто шесть будут ждать, совершенно верно ютоксы это самая большая Проблема вот
Михаил Непряхин: параллельного программирования
Михаил Непряхин: потому, что, ну многие недооценивают медленность Мы там еще будем примеры смотреть когда
Михаил Непряхин: ну типа вот у вас одной один тред типа работает Программа, быстро добавляете второй тред
Михаил Непряхин: быстро но не в два раза
Михаил Непряхин: добавляйте третий тред быстро но все равно не в два раза
Михаил Непряхин: добавляйте сто отрадов, быстро. Но вот ну Там вот немногим быстрее Чем, в одном Двух треках
Михаил Непряхин: и Чем, дальше больше вы добавляете тредов
Михаил Непряхин: тем прирост либо его вообще нет ну там есть точка когда. Его перестает вы быть либо у вас
Михаил Непряхин: мне это вполне эффективно типа проще поднять
Михаил Непряхин: три не знаю. Четыре программы. Каждая в одном ядре
Михаил Непряхин: чем одну программу, но которая будет работать с мидексами вот в этих четырех потоках
Михаил Непряхин: это прямо, суперважно понимать что, как бы ну вот у нас если, бы так все просто было взяли и там добавили количество ядер и оно все равно быстрее Нет прямо и об Этом все равно приходится думать
Михаил Непряхин: рента мгу умеет вытеснять куртины например, если они форрестальда умеют
Михаил Непряхин: ээ если строго говоря есть вопрос такой не собеседник, значит ээ
Михаил Непряхин: изначально и
Михаил Непряхин: была только кооперативная многозначность то есть вот если бы он так не умел, то она была бы только кооперативная но
Михаил Непряхин: действительно мы можем. Взять и застрять циклифор
Михаил Непряхин: и есть
Михаил Непряхин: для этого оптимизация, по-моему десять. Или секунд Максимум и
Михаил Непряхин: и Есть вопрос на собеседника какая многозадачность в гол,
Михаил Непряхин: все таки Кооперативная или вытесняющая выговорите ну. Вытесняющую она в линусе а вгу она кооперативная
Михаил Непряхин: и ответ неправильный потому что в гоу она
Михаил Непряхин: вытесняющее кооперативное то есть да она кооперативная но есть элемент вытеснения,
Михаил Непряхин: вот этот
Михаил Непряхин: Так или в квартируных какая Перспектива не значит в каких моментах тогда вытесняется картина
Михаил Непряхин: ну, вот первый элемент первый Момент она вытесняется Когда работает десять милли секунд
Михаил Непряхин: трон то есть Никакая грутина не будет работать дольше десяти или секунд следующая будет работать
Михаил Непряхин: потом если мы Встречаем Операцию в Воду вывода Работаем сетью с Диском с Ютаксом
Михаил Непряхин: с каналами То Мы тоже Снимаемся с работы и ждем ну Потому Что и
Михаил Непряхин: если Мы закончили работу если Мы закончили работу то Тоже, вытесняется ну даже Не то что вытесняется вытеснение как бы вытеснение правильное это вот это вот когда Мы говорим время вот вот божь работает столько и все вот это называется вытеснение
Михаил Непряхин: а остальное просто типа поработал дал проводить другому
Михаил Непряхин: следующий так если одна грутина озабочивает рамках, одной машины то она станет конец вокальной очереди
Михаил Непряхин: да да да да Ну опять, же смотрите я не помню когда она встает в конец
Михаил Непряхин: а когда она в глобальную очередь уезжает то есть Там есть ситуации когда она в глобальную очередь уезжает а есть когда в конец уезжают тут, для жизни Не требуется вопросов на Собеседование Нет просто, это Не получается Выучивать это Поэтому ну вот будете смотреть Ролики и там об, Этом расскажут про глобальную вокальную
Михаил Непряхин: вот
Михаил Непряхин: и еще смотрите какой момент да можно ли Перезапуском, сервера Настроить Количество корпус рат
Михаил Непряхин: Так значит да значит Мы можем Настроить вот эту вот Штуку.
Михаил Непряхин: Вернее Нет Нет Нет Не, Машин Машины но просто равно физическому вот это
Михаил Непряхин: процесс процесс Мы можем пино строить Количество Пи
Михаил Непряхин: Мы можем Настроить Но Не, абсолютное Количество
Михаил Непряхин: а Количество Пи Которое будет Работать Одновременно У нас даже десять. Девяносто шесть ядер Мы скажем Один, в Один, момент Времени будут Работать Один, Пи
Михаил Непряхин: и Кстати тут. Не Можешь, возникнуть Гонки данных тут и индексы не нужны у нас просто Программа, Превращается в Однопоточную,
Михаил Непряхин: тоже Один. Такой есть, такой момент что вот мы можем понимать что если мы работаем в одном Потоке
Михаил Непряхин: а Гонки данных быть не может потому, что гонка данных возникает когда вот У нас вот кусок памяти в Процессе да и два труда обращаются к Одному и тому Же Кусочку памяти
Михаил Непряхин: а если, У нас в Одном потоке программа запущена
Михаил Непряхин: то гонки данных быть не может
Михаил Непряхин: такой интересный Факт
Михаил Непряхин: то есть как бы как я вам сказал до этого типа есть четыре ядра
Михаил Непряхин: ну мюток убивает Производительность Что же делать
Михаил Непряхин: запустите четыре процесса То есть запустите четыре экземпляра программы.
Михаил Непряхин: Эээ в однопоточном режиме Год работы в бистреля
Михаил Непряхин: никто Не будет блокировок
Михаил Непряхин: да Так
Михаил Непряхин: да Ну кор Король это настраивается в Губернаторысе просто Сможем настраивать Мы
Михаил Непряхин: Ну и Количество трудов оно равно количеству ядер Поэтому как бы и здесь чтобы Не было личных лишних переключений контекста тут голос за этим следит просто количество тротов Одновременно работающих, оно равно кричит связи
Михаил Непряхин: Еще один моменттик важный который просто Так как бы сементически важно понимать и не путаться на словах когда вы просто рассуждаете об этом
Михаил Непряхин: значит
Михаил Непряхин: есть такое понятие как синхронность
Михаил Непряхин: вот научит синтаксии сосинг, давал там на других языках программирования то есть это обычно Реализовано через елт вот этот вот иван-клуб ну про джерада б чудеса я не очень там силен как, Окно Один какой-то эван клуб
Михаил Непряхин: и он везде в общем-то Это Раз, и шарр питон ну интересно насколько я понимаю То же самое
Михаил Непряхин: ну и
Михаил Непряхин: Вот значит вгу у нас этого Нет да То есть как бы у нас вообще все о Синг, изначально все функция Синг, а Синхронно вообще все
Михаил Непряхин: а вэйта нет просто Автоматически происходит Я сказала либо операция в Воду вывода либо мюзикл либо Мы просто десять или секунд поработали и вытеснились
Михаил Непряхин: вот что как бы ну очень сильно и
Михаил Непряхин: вот и как бы вопрос э
Михаил Непряхин: вот
Михаил Непряхин: что такое синхронность синхронность это как Раз таки
Михаил Непряхин: ну вот когда Мы встретились с какой то Блокирующей. Операцией и вот как бы вот этот небольшой локальный вен лупик здесь происходит
Михаил Непряхин: вот вот вот Работа. Программа, работает синхронно то есть она может Одновременно обрабатывать тридцать тысяч рпц
Михаил Непряхин: но при этом работать, на одном ядре
Михаил Непряхин: и тогда мы говорим что ну у нас Программа, синхронная а Но Она одна поточная что в одном потоке работа
Михаил Непряхин: есть ли параллельность в этом случае в правильности нет Мы работаем на одном ядре в одном траде
Михаил Непряхин: параллельности никакой Нет да Мы обрабатываем Тридцать тысяч запросов Но они по очереди Работают просто по чуть-чуть один повод друг друга проводят третий пробор
Михаил Непряхин: то Есть, Программа, Синхронная Но одна поточная
Михаил Непряхин: а вот если у нас трядов, несколько Например Два и больше
Михаил Непряхин: вот здесь уже У нас Программа, Е Синхронная
Михаил Непряхин: и многопоточная то Есть Она Одновременно Реально вот У нас если два -пью вот мы здесь работаем и здесь работаем то есть у нас прям Одновременно в один момент времени может обрабатываться вот прям реально Два запроса
Михаил Непряхин: вот и соответственно куркизна гошки в том Что если этих ядер если этих трудов девяносто штук
Михаил Непряхин: то ну мы можем обрабатывать сумасшедшее количество рпса при этом очень равномерно Вот еще проблема современных языков равномерно утилизировать ресурсы очень Тяжело го Раз, плюнуть ну что как бы если какой-то один
Михаил Непряхин: поток бурутины свои выполнил он пойдет к соседу, и сворует половину и вот они вот так вот друг, другу воровать плюс разгребать глобальную очередь
Михаил Непряхин: и они и
Михаил Непряхин: это очень круто
Михаил Непряхин: вот Поэтому как Бы про синхронность и
Михаил Непряхин: реальную ээ одновременность выполнения в нескольких потоках надо понимать да вгу и так снесен рона
Михаил Непряхин: а еще важно понимать что функция мэйн
Михаил Непряхин: вот когда мы выполняем функцию война запускаем что такое функция Мейн это тоже гурутина
Михаил Непряхин: и когда Внутри функции ээ функци мейн Мы встречаемся интаксист гоу
Михаил Непряхин: и Там
Михаил Непряхин: функция кота выполняется
Михаил Непряхин: Это запускается Тоже, бурутина
Михаил Непряхин: и Поэтому и
Михаил Непряхин: Единица выполнения в гоу это горутина
Михаил Непряхин: у каждой грутины свой небольшой стек
Михаил Непряхин: и соответственно когда Мы Переключаем контекст ну как бы неправильный резкий контекст свеч
Михаил Непряхин: у грутины то есть контекст вич это когда вот Мы это как бы устойчивое выражение для того чтобы отличать когда Мы с одного потока на Другой переключаемся в этот Контекст Вич,
Михаил Непряхин: а здесь Мы Тоже как бы ведь из одной Грутины вот она Поработала Там регистра свои загрузила Кашпрогрема уперлась в ваек операцию и дает работать в следующей, Паутине
Михаил Непряхин: и и
Михаил Непряхин: ну, все что происходит просто указатель в регистре указывает на другой стек то есть здесь у Него свой музей где то там в кучу условно да здесь тоже Другой стек то есть как бы он просто Берет указатель Меняется этого Астека на Другой, Стек
Михаил Непряхин: и начинают выполнять другую грутину Там прогружают агистры но это все равно сильно Дешевле чем переключение Реального треда на Другой тред вот и вот таких. Вот гурутин может быть Не знаю там Сотни Тысяч можете фигачить,
Михаил Непряхин: чем Без Проблем,
Михаил Непряхин: все работает
Михаил Непряхин: так можно ли перзаском Сервер настроить ключевую все
Михаил Непряхин: так ванна здесь
Михаил Непряхин: вопрос есть
Михаил Непряхин: Давайте
Михаил Непряхин: есть ли еще что-то Что осталось непонятным можете прям самый тупой вопрос за губы.
Илиас Эззахид: А у Меня вопрос извиняюсь а
Илиас Эззахид: почему Говорят, Что гуручатые это дешевые и Легкие
Илиас Эззахид: но по Сути я понимаю Что вы. Уже отвечаете, на вопрос.
Михаил Непряхин: Ну вот дело в Том что
Михаил Непряхин: переключение между Бутинами,
Михаил Непряхин: типа там в Десятки Раз, дешевле чем переключение между реальными тредами
Михаил Непряхин: и планировщик
Михаил Непряхин: может сам
Михаил Непряхин: эффективно управлять этими гуртинами
Михаил Непряхин: потому Что планировщик в линусе и
Михаил Непряхин: у Него Там есть конечно приоритет но внутри нашей программы он эти Приоритеты иронии увидит и как Бы не сможет эффективно с этим работать
Михаил Непряхин: а здесь Мы можем Мы можем Там сделать кучу Оптимизаций понять когда вот Эту гортью надо запустить а вот Это, в мютоксе а вот миток саудился Всегда нам. В первую очередь запустить а Или Там, вот пришел в ответ из сети вот Она в первую очередь запустить Там, Еще есть оптимизация вот эта вот последняя гурутина
Михаил Непряхин: которая была запущена в кодексе она выполнится, первой и таких микрооптимизаций очень много когда мы пишем из каналов канал мы по Сути пишем из одной груди и на этом тоже очень много оптимизаций то. Есть когда будете смотреть то. Есть я вам прямо даю по верхам суть самую чтобы просто вот база
Михаил Непряхин: эта база да остальные там оптимизации вы посмотрите Что запомните как бы, ну хорошо неплохо ну вот единственное и
Михаил Непряхин: а в остальном Ну
Михаил Непряхин: в принципе как бы там уже такие микрооптимизации примерно как с кошмапами
Михаил Непряхин: так еще есть и против.
David R: О есть вопросик такой и.
Михаил Непряхин: Рандомно.
David R: Сам Планировал, Решает Что ему Делать и все.
Михаил Непряхин: Да сам рандомно
Михаил Непряхин: когда дело заходит в прогурутины типа инструкции селект Работа. С каналами рандом
Михаил Непряхин: так Что есть.
dmitriy: Да у Меня Еще маленький вопрос уточняющий. Я Там Не. Совсем понял. Про
dmitriy: голый количество ядер то есть получается если Мы не ограничиваем как-то он занимает все и как-то распределяют все вот эти процессы.
Михаил Непряхин: И если Мы соответственно он будет как-то Там быстрее Работать.
dmitriy: Больше обрабатывать и если, мы ограничим одним потоком и будет один процесс ну соответственно он будет там медленнее будет просто работать чем в несколько Потоков.
Михаил Непряхин: Частая проблема, короче Которого по-моему в Последней версии кошки ее решили
Михаил Непряхин: как она выглядит
Михаил Непряхин: короче У нас губернаторся
Михаил Непряхин: обычно ну! Вот если Мы смотрим на ресурсы
Михаил Непряхин: То кошка видит что у нас Есть девяносто шесть ядер
Михаил Непряхин: ну Там Типичный процесс она не, воскресенье
Михаил Непряхин: вот и запускается такая Хоба в девяносто шесть рядов.
Михаил Непряхин: Ааа
Михаил Непряхин: а Ресурсы в Губернаторысе
Михаил Непряхин: а Там реквисты лимиты ну короче говоря Ариквест выставлен так Что У нас только одно, ядро.
Михаил Непряхин: И короче гошка будет очень, сильно тупить потому Что в Губернасе губернатор указывает Что У нас ресурсы одно, ядро.
Михаил Непряхин: А я деревян девяносто шесть
Михаил Непряхин: Он просто будет вот между этими, девяносто шести вот так вот Переключаться Переключаться Постоянно очень короткое маленькое время работать кши будут неэффективно использоваться
Михаил Непряхин: поэтому там есть оптимизация от умер когда и
Михаил Непряхин: вот сюда смотрели сколько в кумирансе указано в стольких потоках и запускайся вот Здесь Один. Значит запускайся в одном а Не девяносто шести По моему в последней версии По Фикси Или Сейчас есть Коробки кошка так себя ведет
Михаил Непряхин: да.
dmitriy: Спасибо.
Михаил Непряхин: И последнее Чего вам покажу вот мы тут сервера начали
Михаил Непряхин: аа где тут гурутины запускаются то есть мы просто
Михаил Непряхин: то есть У нас Тут Идея, в том Что мы Запустились рвак и Вот Мы Тут можем тридцать семь месяцев только рпц устроить Вот Он будет хлопотать давать
Михаил Непряхин: как это работает
Михаил Непряхин: ну здесь просто ручка которая дает вот это ховоро то вот Мы просто и
Михаил Непряхин: Восстнув вврайтер записывал свои? Изба и тот лорд
Михаил Непряхин: мечта Под капотом Он запускает
Михаил Непряхин: а
Михаил Непряхин: Будет просто какая Обертка какой то сервер создает Неинтересно вот функция серый лизонантер
Михаил Непряхин: здесь Мы создаем
Михаил Непряхин: Есть Присоединение
Михаил Непряхин: ну Мы работаем с детьми и
Михаил Непряхин: и Вот основная функция сервера
Михаил Непряхин: а ну тут тоже Не особо Интересно
Михаил Непряхин: а Вот интересная часть вот это вот вот Наш основной цикл. То, есть Мы просто чуть не целиком проверяем не закрыты ли Мы
Михаил Непряхин: и вот Наш основной цикл где Мы принимаем запросы
Михаил Непряхин: Мы
Михаил Непряхин: принимаем
Михаил Непряхин: запрос
Михаил Непряхин: и превращаем его в коннекшн Там Тонкая, обертка еще не суть
Михаил Непряхин: и вот здесь вот вот оно волшебное слово гоу здесь Создается горутина и вот здесь внутри уже серф мы обрабатываем Наш запрос
Михаил Непряхин: то есть
Михаил Непряхин: а под капотом сервера гоу Обычный цикл
Михаил Непряхин: которые вот как только приходит запрос сразу же его обрабатывают запускают гурутину
Михаил Непряхин: Не ждет естественно Пока грутины отработают просто пролетают дальше и снова принимают запрос снова запускают гурутину
Михаил Непряхин: и когда он здесь вот эту строчку достигает он не запускает здесь и Сейчас
Михаил Непряхин: программа на выполнение, это надо понимать он ее
Михаил Непряхин: ставит в очередь то Есть, вот У нас Есть, вот Это вот
Михаил Непряхин: вот локальная очередь вот он еще заставит
Михаил Непряхин: и Поэтому важно понимать что ну вот вы запускаете Пачками эти гурутины да Там
Михаил Непряхин: сто тысяч
Михаил Непряхин: аа во-первых они работать начнут не сразу
Михаил Непряхин: а Там какая-то очередь уже может быть для этого То есть какое-то Время проходит пока оно начинает Работать
Михаил Непряхин: и в зависимости от длины очереди Количество потоков
Михаил Непряхин: и загруженности, очередей а оно вот постепенно начнет работать
Михаил Непряхин: вот и как бы вот это вот такая
Михаил Непряхин: простая идея ну как бы в кодексе видя как в коде Это Легко просто выглядит То Есть условно вот я То же самое написал вот у нас
Михаил Непряхин: цикл. Из десятитераций
Михаил Непряхин: а Мы Запускаем гортину Мы в ней Спим Одну Секунду
Михаил Непряхин: и Выводим дан
Михаил Непряхин: Если Мы просто Запустим
Михаил Непряхин: Мы ничего Не Печатаем и сразу Выходим
Михаил Непряхин: почему Так
Михаил Непряхин: потому что.
Михаил Непряхин: Нужно какое-то время чтобы грутина
Михаил Непряхин: в очередь встала подхватилась процессом поставилась реально машиной вот Этой м абстракцией на выполнение, и выполнилось то есть, ну я еще тут сплю но даже если, бы, я не спал давайте я вот не сплю просто, хочу вывести дан
Михаил Непряхин: запускаю не выводится
Михаил Непряхин: он ну успел один Раз, вывести но вот весь один Раз, успевает десять нужно но чаще всего ничего не успевает
Михаил Непряхин: но иногда видите успех один поток все таки успевает выполниться ну Вот я Вот обновляю и Не спят то есть нужно какое-то время чтобы бурутины начали. Работать Поэтому тут возникает много синхронизации о которых Мы потом говорим нам Войнгруппу всякий возьмем вот но чтобы они Все таки запустились
Михаил Непряхин: надо ну здесь Тоже. Поспать Но в Секунду Поспим и Допустим если. Мы здесь Уберем просто Секунду Посыпим посмотрим ноты Не Сразу. Выведут Все Десять. И все то есть быстренько улись
Михаил Непряхин: вот а если, Мы Внутри Там, секунду Спим ну тут конечно придется подольше спать на две секунды просыпать
Михаил Непряхин: они выводятся Одновременно то есть потому Что
Михаил Непряхин: вот как бы прелесть в том
Михаил Непряхин: Что
Михаил Непряхин: мы таким вот простым синтаксисом
Михаил Непряхин: Не создавая Ни руками никаких потоков. Ничего Мы Никакие. Потоки Не создаем ничего Никакие. Отрады Мы Не поднимаем Мы просто говорим Что вот эта вот Штука. Она Должна выполниться, в десяти разных гурудинах а синхронно
Михаил Непряхин: между Собой
Михаил Непряхин: и ну не Важно вот Мы можем например, и
Михаил Непряхин: ну по дефолту вот она Там Причем тут что-то капает Подсказывал эта переменная нам. Типию вот нам. Сипью вернет количество вот ядер У меня У процессора ну оно Там будет, шестнадцать Там Гомокспорт, возвращает инт да если Мы тут напечатаем
Михаил Непряхин: не скажи тебе шестнадцать а ты ну тридцать два а мне ж тридцать два физических вот тридцать два вам Вернул вот значит можем запустить в одном одном Потоке можем запустить
Михаил Непряхин: а вот
Михаил Непряхин: да но он возвращает Предыдущий Предыдущий он изучает, сколько было да
Михаил Непряхин: короче вот указываем Так запустить в одном Потоке
Михаил Непряхин: и оно все равно Выполняется Одновременно ну потому что Программа, работает Синхронно автоматически хоть в одном потоке тут срочно ровно все это отрабатывает все десять запущенных грутин Одновременно спят одну секунду и отрабатывают десять Раз, ну то есть как бы а если, мы гоу не укажем
Михаил Непряхин: то соответственно каждая будет спать одну секунду и синхронно работать то есть вот он вот это как вот если Мы хотим? Достигнуть огромную работу Мы Гоу не пишем а если Хотим? Синхронную пишем Голову. Получаем синхронную работу
Михаил Непряхин: и это это очень круто то есть как бы там если вы работали до этого что-то подобное написали на других языках со синковейтами там севен-клубами
Михаил Непряхин: То там Это Прям ну. Так себе, выглядит сторонником
Михаил Непряхин: Так и
Михаил Непряхин: все если. Следующий вопрос давайте и последний вопрос этот щелк Вы все расходимся а как серый понимает Что именно на этот спрос надо получить. Результат и вернуть Именно от той брутины ну помечает. И помечается то есть Там, же.
Михаил Непряхин: Ну, Это легко запомнить приходят заголовки за заголовки Запоминаются не вожаты а стек у каждой грутины свой стек поэтому когда грутина поднимается Она помнит на какой запрос Она
Михаил Непряхин: должна дать ответ и в какое Место, ну то есть понятно что. Это в том Же самом соединении но
Михаил Непряхин: она Же знает какой запрос она обрабатывает
Михаил Непряхин: кукути из какого, хоста к ней пришел запрос там Же айпишник,
Михаил Непряхин: как быну
Михаил Непряхин: все просто
Михаил Непряхин: Так все
Михаил Непряхин: здесь все понятно с этим.
David R: Можно, вопрос.
Михаил Непряхин: Давайте.
David R: Что в языках где есть в том же самом питоме мы можем расставляя и выт и указать планировщику что вот в этих местах ты Можешь, переключиться
David R: а и
David R: Операция, и начинает Или не передает управление Или наоборот Там ну То что он тупит и ключит бывает такое.
Михаил Непряхин: Я Ни разу такого. Не встречал. И мне это Ни разу Не требовалось Но Такая возможность есть
Михаил Непряхин: да
Михаил Непряхин: Так
Михаил Непряхин: Не голаяксита гоушет
Михаил Непряхин: вот это вот будет авейт
Михаил Непряхин: она локовые там никогда в жизни то есть это просто вот знаю что такое есть никогда в жизни Не требовалось никогда Не Видел. Чтобы кому-то надо было но Мы можем сказать вот в Этом месте
Михаил Непряхин: аа пожалуйста, перестань работать в Этой грутине и Дай поработать на Другой куртине То есть такая возможность здесь
Михаил Непряхин: мото уэйд.
Илиас Эззахид: Можно Один, последний вопрос.
Михаил Непряхин: Давайте.
Илиас Эззахид: Так
Илиас Эззахид: У кого, есть пакет контекст где можно ставить какой-то стоит правильно понимаю.
Михаил Непряхин: Да.
Илиас Эззахид: А
Илиас Эззахид: этот стейт он локальный для горутины Или он шевелится по горучинам он связан как-то связан с гурутинами вообще.
Михаил Непряхин: Оон для грутины он ну можно конечно из одной грутины в другую этот! Контекст передать
Михаил Непряхин: да но обычно один запрос Один. Контекст то есть ну. Это и из контекста Видно что контекст это вот пришел какой то запрос
Михаил Непряхин: допустим надо вам для Дитупликации Айтишник ключи импотентности взять вы его берете помещаете в контекст
Михаил Непряхин: и дальше этот контекст
Михаил Непряхин: пробрасываете, дальше по всем. Вызовам функций ну это бывает нужно для трейсинга или вот для какой нибудь вот чтобы дальше следующий сервис проббросить какие то заколовки вот обычно ну Вернее Всегда, все таки на Одну гору тину один контекст
Михаил Непряхин: но можно передать контекст из одной груди в другую
Михаил Непряхин: да так можно сделать
Михаил Непряхин: то есть смотрите ведь, память у нас общая да то есть мы из любой гурутины Можем взять и Обратиться к Какому то Кусочку памяти
Михаил Непряхин: ну просто надо Не Забывать Что кто то еще может какая то другая грутина может сюда же обращаться да вот гонка данных чтобы ее не было нужен Мюток
Михаил Непряхин: но если, мы знаем что Кроме нас туда никто не полезет то и Минутокс не нужен или допустим только на чтение мы только читаем хоть, из ста тысяч. Грутин Мы будем читать один и тот же Кусочек памяти Это, безопасно пожалуйста,
Михаил Непряхин: то есть как бы Мюток нужен Там где есть запись он говорит где есть запись и Мы не хотим? Устроить вон Куда она их Там появляется мюкс
Михаил Непряхин: если. Записи Нет Только Чтение. Любой кусок памяти из любого количества Грусти нужно читать
Михаил Непряхин: можем расширить этот Не знаю контекст на всех квартир, но просто в этом Нет смысла но техническим образом,
Михаил Непряхин: да все значит по платье там ссылку я скинув чатюсь на восемь занятий было
Михаил Непряхин: кто помесячно платит то надо будет оплатить сынку Яскину до Следующего занятия вот все Давайте надеюсь было Интересно Домашку, посмотрите
Михаил Непряхин: тоже там очень много интересных материалов Которые можно посмотреть до Следующего вторника,
Михаил Непряхин: создавайте всем. Пока.