Size: a a a

2020 November 25

AH

Ayrat Hudaygulov in pro.net
Ilya Chernoudov
использую httpclientfactory!
Эт понятно, но я про то что в каждом правиле бывают исключения
источник

MS

Mark Shevchenko in pro.net
HttpClient диспозить не обязательно, но я диспожу для общности. Но я код посмотрел, и понял, что это ни на что не влияет.
источник

ЕБ

Евгений Бурмистров... in pro.net
Ayrat Hudaygulov
да отличный пример. Диспоузишь на каждом вызове?
но его же надо диспоузить, просто не на каждом вызове
источник

AH

Ayrat Hudaygulov in pro.net
вот про токен сорс примерно та же история. Для верности можешь диспозить, да.
Он там чистит колбеки регистрации, которые на токен вешаются, что важно
источник

AH

Ayrat Hudaygulov in pro.net
но я вот их никогда не юзал
источник

AH

Ayrat Hudaygulov in pro.net
В целом, да. Лучше диспозить
источник

IC

Ilya Chernoudov in pro.net
Ayrat Hudaygulov
но я вот их никогда не юзал
келбеки?
источник

AH

Ayrat Hudaygulov in pro.net
Ilya Chernoudov
келбеки?
linkingRegistrations[i].Dispose();
источник

AH

Ayrat Hudaygulov in pro.net
он вызывает вот это у регистраций
источник

IC

Ilya Chernoudov in pro.net
Ayrat Hudaygulov
он вызывает вот это у регистраций
дак это же келбеки регистраций экшенов в CancellationToken
источник

AH

Ayrat Hudaygulov in pro.net
Ilya Chernoudov
дак это же келбеки регистраций экшенов в CancellationToken
ну
источник

AH

Ayrat Hudaygulov in pro.net
а я о чом
источник

AH

Ayrat Hudaygulov in pro.net
Переслано от Ayrat Hudaygulov
вот про токен сорс примерно та же история. Для верности можешь диспозить, да.
Он там чистит колбеки регистрации, которые на токен вешаются, что важно
источник

MS

Mark Shevchenko in pro.net
О! Матрица сбоит!
источник

A

Aloraman in pro.net
Наброс про abstract struct довольно быстро потонул, видимо надобно что-то поближе к функциональщине.
Например, поддержка tagged union со стороны рантайма! (Не полноценные sum type, Either<A,A,B> и Either<B,A> - разные типы. но все ж)
Если их ручками реализовывать, то натыкаешься либо на аллокации, либо на жирненькость.
Имплементация должна содержать индекс реального значения (tag) и множество возможных значений, из которых задано только одно (вот отсюда возникает оверхед по используемой памяти)
- Если имплементирован как value-тип, то передавать его дорого, приходится возиться с ref return и ref/out параметрами
- Если имплементирован как  reference-тип, то место передавать дешево, но нужно сделать аллокацию, да и в куче место отожрет
Можно попробовать уменьшить занимаемое место, как-то сделав overlap участков памяти под конкретные значения:
- В tagged union одно поле object под все значения, а по индексу уже определяем, что за конкретный тип. Постоянный боксинг/анбоксинг и тайпчеки!
- Включаем байтоебство, и FieldOffset'ами записываем все значения по одному смещению, и по индексу вытаскиваем конкретные байтики. Все хорошо пока все значения или только value-типы или только reference-типы. Как только натыкаемся на оба получаем E-E-Exception! Нельзя оверлапить ссылки и данные, для GC нужно обязательно гарантировать, что в этом участке памяти ссылка в кучу может быть либо всегда, либо никогда!
То бишь для стройного быстрого tagged union нужна реализация со стороны рантайма, и что б GC знал, что надо индекс проверять перед тем как ссылки переписывать.
Что думаете? Где возникнут type holes, GC holes, etc?
источник

E

EgorBo in pro.net
tldr
источник

A

Aloraman in pro.net
источник

I

IdiocyAcceptance in pro.net
Aloraman
Наброс про abstract struct довольно быстро потонул, видимо надобно что-то поближе к функциональщине.
Например, поддержка tagged union со стороны рантайма! (Не полноценные sum type, Either<A,A,B> и Either<B,A> - разные типы. но все ж)
Если их ручками реализовывать, то натыкаешься либо на аллокации, либо на жирненькость.
Имплементация должна содержать индекс реального значения (tag) и множество возможных значений, из которых задано только одно (вот отсюда возникает оверхед по используемой памяти)
- Если имплементирован как value-тип, то передавать его дорого, приходится возиться с ref return и ref/out параметрами
- Если имплементирован как  reference-тип, то место передавать дешево, но нужно сделать аллокацию, да и в куче место отожрет
Можно попробовать уменьшить занимаемое место, как-то сделав overlap участков памяти под конкретные значения:
- В tagged union одно поле object под все значения, а по индексу уже определяем, что за конкретный тип. Постоянный боксинг/анбоксинг и тайпчеки!
- Включаем байтоебство, и FieldOffset'ами записываем все значения по одному смещению, и по индексу вытаскиваем конкретные байтики. Все хорошо пока все значения или только value-типы или только reference-типы. Как только натыкаемся на оба получаем E-E-Exception! Нельзя оверлапить ссылки и данные, для GC нужно обязательно гарантировать, что в этом участке памяти ссылка в кучу может быть либо всегда, либо никогда!
То бишь для стройного быстрого tagged union нужна реализация со стороны рантайма, и что б GC знал, что надо индекс проверять перед тем как ссылки переписывать.
Что думаете? Где возникнут type holes, GC holes, etc?
Есть же пропозал по DU, почитай да и всё
источник

I

IdiocyAcceptance in pro.net
в csharplang
источник

W

WhiteBlackGoose in pro.net
DU отчасти симулируется nested record-ами
источник