Size: a a a

2021 July 14

S

S in Go-go!
Никак. Зачем ее прерывать? В этом и был смысл нового режима вытеснения.
источник

S

S in Go-go!
Нет. Это делает планировщик Go. Это же горутины и юзерспейс. Ядерный планировщик вообще тут никаким боком.
источник

p

pragus in Go-go!
Ну вот у нас в горутине код:


var i uint64
for { i++ }


Чем нам поможет safe point хоть на весь цикл?
источник

V

V---V in Go-go!
Мьютекс блокирует доступ ко всему коду, который находится между Lock() и Unlock()?
источник

S

S in Go-go!
Не понимаю вопроса. Речь шла про асинхронные сейфпоинты. Я написал выше как оно работает.
источник

S

Sergey in Go-go!
мутекс блокирует себя. Любой другой поток, пытающийся залокать тот же мутекс будет ждать, пока кто-то его анлокнет.
источник

V

V---V in Go-go!
Вон оно что. Спасибо.
источник

p

pragus in Go-go!
Вопрос простой: как происходит вытеснение в tight loop?
источник

S

S in Go-go!
Если вопрос "Зачем прерывать такую горутину?", то ответ очевиден - чтобы не занимала весь поток.
источник

p

pragus in Go-go!
Нет, вопрос как?
источник

S

S in Go-go!
Планировщик. Проверяет стек. Горутины. И делает вывод - в безопасном ли она сейчас состонии или нет...
источник

p

pragus in Go-go!
Планировщик в отдельном треде?
источник

S

S in Go-go!
Да.
источник

ВС

Владимир Столяров... in Go-go!
Есть чудесный файл https://cs.opensource.google/go/go/+/refs/tags/go1.16.6:src/runtime/preempt.go
Прямо в заголовке которого кратко описан весь механизм
Зачем спорить то?)
источник

p

pragus in Go-go!
1 тред на все ядра?
источник

S

S in Go-go!
Тогда к чему вопросы? Там все ясно написано.
источник

A

Alexander in Go-go!
Здравствуйте! Объясните, пожалуйста,  почему при параллельной записи в два разных поля мапы возникает состояние гонки (пример кода https://play.golang.org/p/lNMtUHhSDPV ), а при аналогичной операции со структурой - нет (пример кода - https://play.golang.org/p/pa5A-t-rk7C )?
источник

p

pragus in Go-go!
Ну там инспекция в signal handler, AFAIK.  И прерывание через него.
источник

S

S in Go-go!
Ну какая разница из-за чего дёргается инспекция. Речь была про то, как и кто размечает код и расставляет сейфпоинты.
источник

V

Verdant in Go-go!
В не буферизированном канале цикл ждет новых значений в канал, до тех пор, пока канал не закрыт. Когда придет значение, значение вычитывается из канала и цикл срабатывает. Синхронно, одно за другим
источник