Re[9]: Программирование в M**a/Faceb**k
От: vdimas Россия  
Дата: 21.08.22 17:59
Оценка: +1
Здравствуйте, SkyDance, Вы писали:

V>>Многозадачность может быть и кооперативной.

SD>Поэтому я и написал "вытесняющая". Для С++ кооперативная, мягко говоря, не реализована.

В виндах 2.x-3.х была реализована на библиотечном уровне API Windows.

По нынешнему состоянию конкретно в языке — давно реализована в Бусте на библиотечном уровне и частично в 20-м стандарте С++ на уровне компилятора.


V>>Более того, для NUMA противопоказана вытесняющая многозадачность.

SD>Другой в С++ нормально не воспользуешься.

Кооперативную многозадачность оставили в Windows в виде API фиберов.
Там всегда было достаточно небольшой плюсовой обертки над этим делом, чтобы удобно юзать из кода.


V>>Immutability хорошо работает разве что для разделяемой по SMP памяти.

SD>Возможно, у нас разное понимание immutability.

В этом рассуждения я рассматривал с т.з. вычислительной модели железа — при доступе только по чтению не происходит нагрузка на механизм когерентности памяти в SMP.


SD>Если синхронизация (общение, вызовы процедур, events и т.п.) сделана через message passing, то там уже по определению immutability — ибо сообщения есть копии данных.


Ну вот как раз с техникой immutability в SMP не обязательно глубоко копировать данные, можно передавать ссылку на них.


V>>Так шта, будущее мейнстрима за кластерами, составленными из узлов SMP, тут я могу забиться на произвольнейшую сумму. ))

SD>Это скорее настоящее, чем будущее.

Сегодня кластерные вычисления являются экзотикой, соответствующая их поддержка языками и тулзами убога — на уровне протухшего линухового fork.
Это должно быть в шаговой доступности, примерно как в шаговой доступности стали однажды в юниксах доступны потоки через POSIX Thread (pthread) стандарт.

Я ведь еще помню времена, когда создавал потоки в юниксах через аналог fork — clone (указываешь уровень изолированности процесса — шарить общую память, это и были юниксовые потоки когда-то).


SD>Просто чем дальше кластеры друг от друга (в пределе — на другом континенте)


Не-не-не.
Сама суть кластерных вычислений — эффективное объединение ресурсов.
Имено поэтому физическое расстояние м/у кластерами играет рояль.
В пределе — на одном кристалле.


SD>тем более важными становятся вопросы асинхронного общения


Это вопросы имеют такую же важность и при наносекундных задержках, т.е. с т.з. синхронизации абсолютная величина задержек не принципиальна.


SD>восстановления при недоступности ну и вообще distributed computing.


Плюсам до фени, как и сям, бо поверх низкого уровня можно накрутить высокий.
Была и есть такая операционка QNX, она бодро умела создавать процессы одинаково что на локальном хосте, что на удалённом.
Общение с родительским процессом через стандартные в посиксе пайпы.

Дальше дело техники накрутить типизированное общение по каналу на том же С++ через сериализацию-десериализацию сообщений.


SD>Где С++ совсем уж плох. Однако ж до сих пор особо упорные именно С++ и двигают как "язык для создания микросервисов", и даже кивают в сторону всяких там Яндексов. Не понимая, что первичны там не свойства языка, а незнание инженерами более высокоуровневых подходов.


Эти высокоуровневые подходы унутре всё-равно на плюсах реализуют. ))
Отредактировано 21.08.2022 18:01 vdimas . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.