История изменений
Исправление lbvf50txt, (текущая версия) :
Если у сервера 32 ядра, то это около 32 запросов в секунду до того как скорость и этого запроса, и всего остального что происходит на этом сервере начнёт деградировать.
Многопоточность это интересная тема. Досконально разобраться как писать код который действительно ускоряет работу программы за счёт параллельного исполнения. Ведь надо, чтоб задача изолирована в памяти без обращения к внешним устройствам: сети или диску.
В Golang есть отдельный скедулер который может быстро перещелкивать горутины прикрепляя и открепляя их от треда ОС. Таким образом быстро перебираются корутины ожидающие ответа из сети. И сокращается время на скачивания данных из нескольких источников, так как этот процесс «запаралеливается», а цена переключения - минимальна.
Вот тут уже надо копать в глубь с буферам и интерфейсами. На каком этапе ОС сигнализирует корутине что пришли данные из сети? И так далее и тому подобное. Это уже достаточно низкий уровень, который не так часто нужен для проектирования конечных приложений.
Например, сайт codewars.com около 10 лет назад вообще работал на NodeJS c его Eventloop и без доступа к такому глубокому уровню детализации. Читал код запуска задачу на проверку в отдельном контейнере.
Так что так.
Concurrency is the computer science term for breaking up a single process into independent components and specifying how these components safely share data. (c) Jonathan Bodner
Learning Go An Idiomatic Approach to Real-World Go Programming
page 203. Chapter 10. Concurrency in Go
Канкаренси это термин из информатики описывающий разбиение процесса на независимые компоненты и определение безопасного разделения данных между ними. (с) Джонатан Боднер
Есть о чем порассуждать.
Исправление lbvf50txt, :
Если у сервера 32 ядра, то это около 32 запросов в секунду до того как скорость и этого запроса, и всего остального что происходит на этом сервере начнёт деградировать.
Многопоточность это интересная тема. Досконально разобраться как писать код который действительно ускоряет работу программы за счёт параллельного исполнения. Ведь надо, чтоб задача изолирована в памяти без обращения к внешним устройствам: сети или диску.
В Golang есть отдельный скедулер который может быстро перещелкивать горутины прикрепляя и открепляя их от треда ОС. Таким образом быстро перебираются корутины ожидающие ответа из сети. И сокращается время на скачивания данных из нескольких источников, так как этот процесс «запаралеливается», а цена переключения - минимальна.
Вот тут уже надо копать в глубь с буферам и интерфейсами. На каком этапе ОС сигнализирует корутине что пришли данные из сети? И так далее и тому подобное. Это уже достаточно низкий уровень, который не так часто нужен для проектирования конечных приложений.
Например, сайт codewars.com около 10 лет назад вообще работал на NodeJS c его Eventloop и без доступа к такому глубокому уровню детализации. Читал код запуска задачу на проверку в отдельном контейнере.
Так что так. Есть о чем порассуждать.
Исходная версия lbvf50txt, :
Если у сервера 32 ядра, то это около 32 запросов в секунду до того как скорость и этого запроса, и всего остального что происходит на этом сервере начнёт деградировать.
Многопоточность это интересная тема. Досконально разобраться как писать код который действительно ускоряет работу программы за счёт параллельного исполнения.Ведь надо, чтоб задача изолирована в памяти без обращения к внешним устройствам: сети или диску.
В Golang есть отдельный скедулер который может быстро перещелкивать горутины прикрепляя и открепляя их от треда ОС. Таким образом быстро перебираются корутины ожидающие ответа из сети.
Вот тут уже надо копать в глубь с буферам и интерфейсами. На каком этапе ОС сигнализирует корутине что пришли данные из сети? И так далее и тому подобное. Это уже достаточно низкий уровень, который не так часто нужен для проектирования конечных приложений.
Например, сайт codewars.com около 10 лет назад вообще работал на NodeJS c его Eventloop и без доступа к такому глубокому уровню детализации. Читал код запуска задачу на проверку в отдельном контейнере.
Так что так. Есть о чем порассуждать.