Size: a a a

2020 August 30

IV

Igor V in ctodailychat
Alex
я погуглил прежде чем писать))
Goroutines are multiplexed onto a small number of OS threads
Не то гуглил. Нужно было гуглить про CSP. Абсолютно другая модель и нет пулов
источник

A

Alex in ctodailychat
Igor V
Не то гуглил. Нужно было гуглить про CSP. Абсолютно другая модель и нет пулов
Communicating sequential processes?
источник

IV

Igor V in ctodailychat
Да
источник

IV

Igor V in ctodailychat
источник

IV

Igor V in ctodailychat
Вот неплохое overview различных моделей
источник

A

Alex in ctodailychat
спс
источник

IV

Igor V in ctodailychat
источник

GL

Gleb Lesnikov in ctodailychat
собсно в шарпе async/await же тоже способ работы с конкарренси
источник

KR

Kai Ren in ctodailychat
Igor V
Нет, там совсем не так. Никакого пула заранее запущенных тредов нет. По-умолчанию все в одном треде.  Фишка го в concurrency, а не parallelism. Самое важное что там CSP модель вокруг которой все построено.
Но ведь по умолчанию там действительно пул тредов под капотом равный кол-ву ядер. А один тред будет, если уже руками выкрутить GOMAXPROCS в 1.

И синхронизация там на тех же каналах - честная, мультитредная. Если бы был всего один тред - мьютексы/атомики там были бы не нужны.
источник

KR

Kai Ren in ctodailychat
CSP - это ведь больше про абстракцию, а не техническую реализацию. С CSP-абстракциями можно жить и на многих тредах, и на одном треде, и даже между машинами.
Ведь есть всё тот же "изоморфизм CSP-акторов": акторы можно выразить через CSP, а CSP - через акторы (именованные процессы с неименованными каналами, и неименованные процессы с именованными каналами).
источник

AP

Alexander Panko in ctodailychat
Kai Ren
CSP - это ведь больше про абстракцию, а не техническую реализацию. С CSP-абстракциями можно жить и на многих тредах, и на одном треде, и даже между машинами.
Ведь есть всё тот же "изоморфизм CSP-акторов": акторы можно выразить через CSP, а CSP - через акторы (именованные процессы с неименованными каналами, и неименованные процессы с именованными каналами).
последнее вечером после пива уже не вкурить, утром перечитаю ещё раз)
источник

IV

Igor V in ctodailychat
Kai Ren
Но ведь по умолчанию там действительно пул тредов под капотом равный кол-ву ядер. А один тред будет, если уже руками выкрутить GOMAXPROCS в 1.

И синхронизация там на тех же каналах - честная, мультитредная. Если бы был всего один тред - мьютексы/атомики там были бы не нужны.
Треды конечно есть, но шедулер не работает с тред пулом и вообще такого понятия в шедулере нет. Есть логический процессор (P - в терминологии го), которые держит контекст. С ним по-умолчанию связан один OS thread (M). M обрабатывает локальную и глобальную очередь которую пополняет P воруя G  у других P. Aka work stealing model. GOMAXPROCS как раз регулирует количество P и максимальное кол-во тредов выполняемых  одновременно (spinning threads), а самих тредов может быть больше.
источник

A

Artur in ctodailychat
Alex
в дотнете есть thread-pool (понятно по названию), есть таски (сделаны на таймерах), есть "просто" треды (которые типа managed, но в итоге все равно мапятся в треды операционной системы
тред пул это ж просто пачка обычных бэкграунд тредов,  так же используют ос треды под капотом
источник

A

Artur in ctodailychat
таймеры тоже используют треды из пула, либо event loop в случае winforms. остаются таски, которые asyc/await, но и те используют свой тред пул. хотя можно сделать его размер равным единице, и видимо, это будет похоже на то, что Игорь пишет про го
источник

K

KivApple in ctodailychat
Alexander Panko
вообще когда я доковылял что быстрый контекст свитчинг для тредов по сравнению с процессами, на самом деле яйца выеденного не стоит, там по сути только экономия на единой таблице страниц памяти, а в замен весь этот гемор с синхронизацией конкурентного доступа к ресурсам, было ощущение что меня слегка наебали)
С другой стороны передаввть данные между процессами ещё больше гемор
источник

K

KivApple in ctodailychat
Igor V
но осадок остался
А насколько вообще имеют смысл все эти менее популярные веб-сервера, если ты делаешь не второй Фейсбук по популярности?
источник

K

KivApple in ctodailychat
Igor V
go, нода, питон, erlang, джава и .net и любой vm язык. там или корутины или green threads
В Java самые обычные треды, если речь не о асинхронных штуках типа netty
источник

K

KivApple in ctodailychat
Alexander Panko
мда, это моя предыдущая компания заставила всех разработчиков подписать nda какие то адские, что они от греха подальше все закрыли и даже на конфы перестали с докладами ходить, какой маразм(
Не всё, что прописано в договоре имеет законную силу, но люди перестраховываются(((
источник

K

KivApple in ctodailychat
А в чём проблема интеграции с vcs? Ведь под ней будут скрипты миграции и всё будет норм. Почему так принципиально именно отсутствие в самой бд возможности изменить конкретную строчку хранимки, а не сделать create or replace? (Или с чего бомбят люди?) Для таблиц alter table нужен только чтобы не терять данные
источник

K

KivApple in ctodailychat
Вообще забавно видеть хейт технологии. Как будто половину комментариев пишут уволившихся пхпшники
источник