.
И разве го не использует потоки Ос и между ними перекидует горутины?
Pawel
если под "потоком го" вы имеете в виду асинхронную таску, то это знание никак не поможет
в го нет асинхронных тасков. есть горутины. или "гринетреды"
Pawel
нет. есть правильная терминология и отсебятина. рекомендовано придерживаться первой.
.
Окей, в разрезе Го: потоки, которые он изначально создаёт, используются постоянно до конца работы программы или планировщик может грубо говоря заменять их?
Cat
нет. есть правильная терминология и отсебятина. рекомендовано придерживаться первой.
эх, если бы вы всегда придерживались правильной терминологии
Vladimir
Понял
В ос переключение потоков идёт относительно просто - проснулся таймер, состояние того, что выполнялось сохраняется, восстанавливается состояние того что будет выполняться. Это позволяет прервать поток в любой момент времени, но довольно дорого по ресурсам
Cat
и ты на это не влияешь
ThunderAL
@kezvision Key import ( "github.com/satori/go.uuid" "crypto/rsa" "crypto" "crypto/sha256" "crypto/x509" "github.com/pkg/errors" "../Keystore" ) Keystore import ( "github.com/satori/go.uuid" "github.com/pkg/errors" "../Key" )
ThunderAL
Cat
и модули и файлы лучше называть со строчной буквы, чтобы не было путаницы, как у вас
Cat
Потоки может переключать само приложение и ОС?
исполнение потоков переключает ОС, исполнение гошных рутин переключает приложение в этом отличие контекста асинхронных тасок от потоков
ThunderAL
@kezvision я совсем недавно в голанге. подскажите, пожалуйста. мне, просто, надо сделать верификацию через cli. выбрал голанг для опробации этого яп
Pawel
Почему не должно волновать?
тебе надо знать только что ос тред дроже чем зелёный поток Го. ос треды жрут 1 мб стека, гринтред несколько кб, переключение между ос тредами происходит в режиме ядра, а между гринтредами нет. всё
Cat
> ос треды жрут 1 мб стека, гринтред несколько кб depends on
.
Но в тоже время допустим в Пайтоне интепритатор сам переключается между тредами
.
Сам решает какой тред должен выполняться в текущий момент
.
это ты проверял лично?
Ну это принцип работы GIL
Cat
Ну это принцип работы GIL
GIL это всего лишь lock, который не даёт исполняться нескольким потоком одновременно
Pawel
Сам решает какой тред должен выполняться в текущий момент
в питоне асинхронщина по образу и подобию .net В Го синхронное всё кроме select-а
.
То есть он не даёт им выполняться только за счёт локов?
Vladimir
Потоки может переключать само приложение и ОС?
Потоки ос переключает ос. Сама, когда посчитает нужным
Vladimir
Горутины переключает го само у себя, в моменты когда это безопасно (можно поискать списки моментов когда рантайм проверяет нужно ли зашедулить другой поток)
Cat
(если будешь искать, список моментов есть в спеке)
Vladimir
Притом го ещё знает что нужно сохранять в данный момент
ThunderAL
@kezvision готур прошёл давненько всё забылось. обязательно пройду щас ещё раз. подскажите как это правильно заимпортить сейчас
.
Как я понимаю, в Го те потоки, которые поднимаются при старте программы, работают одновременно для приложения. Но в то же время планировщик ОС переключается между потоками нашего приложения и других. Верно?
Vladimir
Поэтому переключение немного быстрее идет
Vladimir
Но не в любой момент
.
Понял, спасибо
.
Сейчас как то прояснилось
.
Посоветуете какую то литературу чтобы углубиться в вопрос многопоточности? Чисто интересно
.
Ну и наверняка хорошую литературу по ОС
Pawel
Посоветуете какую то литературу чтобы углубиться в вопрос многопоточности? Чисто интересно
здесь есть глава, в которой написано всё что тебе надо знать о многопоточности для программирования на Го http://www.gopl.io/
.
здесь есть глава, в которой написано всё что тебе надо знать о многопоточности для программирования на Го http://www.gopl.io/
Читал. В контексте Го я понимаю как работает, но не мог разобраться для себя, как это проходит на уровне ниже
.
Сейчас более менее прояснилось
.
Всем спасибо за ответы
Cat
жаль, что в го это никак не пригодится
ThunderAL
@kezvision ЫЫЫЫЫЫЫЫЫ. нашёл в чём дело. когда вспомнил, что в гошке public это заглавная буква(ну шо поделать: привык я к java). поднял GetByUUID и всё норм. спасибо
.
Подскажите, статья ещё актуальна? https://morsmachine.dk/go-scheduler
Zver
https://rakyll.org/scheduler/
Zver
Сейчас mark and sweep да?
Я в такие подробности не вдавался.
heavycharged
да, concurrent mark and sweep
Zver
Или уже просто не помню.
.
Кстати, планировщик распределяет горутину между тредами случайным образом?
.
Когда мы создаём горутину
Daniel
Можно считать, что случайным
Александр
добрый вечер, пишу парсер yandexa необхоимо делать 20 запросов с промежутком 5 секунд. Yandex понимает что это парсер. подскажите самый безболезненый способ. пока что пользуюсь вот этим github.com/antchfx/htmlquery
Constantine️
😄
Constantine️
я даже не знаю, есть ли чат по джуниорам в мире веба )
Constantine️
не путайте мягкое с теплым, яндекс детектит, что ваш айпи дергает их сервис. хотите обойти? ищите хорошие прокси на каждый запрос
Aleksandr
не путайте мягкое с теплым, яндекс детектит, что ваш айпи дергает их сервис. хотите обойти? ищите хорошие прокси на каждый запрос
ну почему? 20 запросов за 100 секунд - это не такой уж показатель для ip, чтобы его детектить. очевидно http client не проходит проверку, которую бы прошел браузер. и ip здесь очень косвенно
Aleksandr
(хотя 1 ip per request помог бы конечно)
Constantine️
а если это все постоянно дергается? 🙂
Constantine️
в течение часа-двух-трех?
Constantine️
это будет показателем?))
Constantine️
если парсишь гугл или яндекс — запасайся проксями
Constantine️
это не сайты клаудфлейром защищенные обходить, где достаточно eval для строки Х сделать и отдать с запросом
Aleksandr
не знаю. за натом же дергают люди в течении 24 часов
Constantine️
у разных юзеров разные браузеры, у них разная интенсивность
Constantine️
у меня иногда при входе на яндекс мессадж — ваш айпи был замечен в парсинге, а введика капчу