Size: a a a

Scalability Camp — распределенный чат [СММщик в отпуске на Бали]

2020 January 15

GG

George Gaál in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Не спасает полностью
источник

p

pragus in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Timur Safin
да и во всех больших конторах с большой Си++ базой в той или иной степени есть асинхронный фреймворк. Вот и в предыдущем Акронисе тоже было
а userver появился раньше folly?
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
с большой долей округления userver появился (стал использоваться вне команды его создавшей) где-то год назад. Так что сильно позже folly
источник

AB

Aleksandr Borgardt in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
а наружу когда ?
источник

A

Alexander in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Timur Safin
с большой долей округления userver появился (стал использоваться вне команды его создавшей) где-то год назад. Так что сильно позже folly
Но первые подходы к этой штанге Яндекс, судя по всему, давно делал.
Это видно по датам публикаций серии статей https://habr.com/ru/post/201826/, https://habr.com/ru/company/yandex/blog/240525/ и выступлений на Яндекс C++ Party
источник

A

Alexander in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
За что Go можно поблагодарить, так за популяризацию концепта лёгких потоков
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
то, что делал Демченко в большом Яндексе не имеет отношения к тому что мы делаем в Я.Такси
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Aleksandr Borgardt
а наружу когда ?
Непонятно, как пойдёт. Насколько я понимаю (но это не точно) они работают над open source userver
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Alexander
За что Go можно поблагодарить, так за популяризацию концепта лёгких потоков
Если быть немного точнее, мы должны благодарить Симулу за популяризации понятия сопрограмма
источник

AB

Aleksandr Borgardt in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
А будет как с catboost  в две ревности
источник

GG

George Gaál in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Timur Safin
Если быть немного точнее, мы должны благодарить Симулу за популяризации понятия сопрограмма
СЛАВА ВИРТУ!
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
George Gaál
СЛАВА ВИРТУ!
Так-то слава, конечно!

Но причём тут Вирт?
источник

ZO

Zlata Obukhovskaya in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Timur Safin
Так-то слава, конечно!

Но причём тут Вирт?
Viert?
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
FWIW авторы Симулы - норвеги Ole-Johan Dahl и Kristen Nygaard
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Никлаус Вирт (Niklaus Wirth) начал с Algol-W
источник

A

Alexander in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Timur Safin
Непонятно, как пойдёт. Насколько я понимаю (но это не точно) они работают над open source userver
А можно уточнить, у userver какая модель, m:n или n:1?
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Alexander
А можно уточнить, у userver какая модель, m:n или n:1?
А, типа, с точки зрения ос между ними есть какая-то разница?
источник

TS

Timur Safin in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
ну то есть, если мы не лезем в планировщик (а мы не лезем) и делаем сохранение контекста в user-space (при помощи boost::coroutine2), то какая технологическая разница между 1:N и M:N?
источник

A

Alexander in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
С точки зрения ОС нет разницы, а с точки зрения пользователя либы есть, либо сопрограмма при старте запускается на любом из пула возможных потоков ос ( в процессе работы один из незанятых потоков может "украсть" задачу у другого потока ядра) или этого механизма нет и разработчик сам определяет где выполняется запущенная корутина (как бонус, сам перемещает её между потоками ос)
источник

A

Alexander in Scalability Camp — распределенный чат [СММщик в отпуске на Бали]
Alexander
Кстати, Тимур, для следующих баттлов "C++ vs Go" могу посоветовать отличную работу "Improving the Performance of User-level Runtime Systems for Concurrent Applications"(https://uwspace.uwaterloo.ca/handle/10012/13935)
Это защита докторской в университете Уотерлу(Онтарио) от некоего Saman Barghi, он же автор библиотеки https://git.uwaterloo.ca/mkarsten/libfibre
В ней можно найти всё касательно механики сопрограмм со ссылками на множество С/С++-проектов, в том числе есть сравнения с Go.
Основное что оттуда можно подчерпнуть - всё что есть в Go давно(раньше чем появился Go) в том или ином виде реализовано на C++.
Да и у вас в Яндексе, как я понимаю, есть Userver (https://habr.com/ru/company/yandex/blog/474438/) со всеми теми возможностями что даёт Go
Здесь у автора этот механизм называется work-stealing
источник