Как стать автором
Обновить
9
0
Кирилл @EvilBlueBeaver

Пользователь

Отправить сообщение

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

не любые два идущих подряд тезиса автоматически превращаются в силлогизм

Насчет силлогизма не знаю. Но как вы произвольное количество тезисов умеете в софистику превращать видно невооруженным взглядом.

Пробовали? Понравилось?

Представьте себе! И пробовал и продолжаю пробовать. И нравится вполне. Как минимум гораздо больше, чем изобретать с нуля то, что уже изобретено, но имеет "фатальный недостаток".

Раз у вас есть пулл-реквест, значит у вас есть форк. Значит никто не мешает использовать форк. Как из этого следует, что надо взять и напилить с нуля велосипед?

Де-факто стандарт в современном мире это UTF-8. Если про UTF-16 я еще могу сказать, что он там где-то в кишках винды до сих пор популярен, то про использование UTF-32 я вообще ничего не знаю, но возможно потому что у меня область немного другая и это конкретно я не сталкиваюсь.

В теории наверное что-то есть для работы как с UTF-16, так и с UTF-32, но я практически уверен, что там будет либо с проверками, либо unsafe, либо оба варианта рядом.

И в любом случае это не имеет отношения к теме поста, потому что сериализация/десериализация прямого представления в памяти делается только через unsafe. Что подразумевает, что человек в теме происходящего разбирается достаточно хорошо, чтобы сделать это корректно.

Я не знаю способа прочитать один символ именно как символ. Возможно он существует, но я не в курсе. Я знаю только про str::from _utf8, который все это проверяет и про str::from_utf8_unchecked который не проверяет и он, соответственно, unsafe.
А так юникод вообще вещь странная и я не очень понимаю, что считать символом.
Одну и ту же Ë можно записать и как один символ и как два (диакритический знак и Е). В общем если читать вручную посимвольно, то это верный способ по итогу рано или поздно себе ногу отстрелить.

Что-то мне подсказывает, что читать без unsafe кусок памяти в структуру/енам у вас не выйдет, это не си. А unsafe подразумевает, что вы знаете, что вы делаете.

Надо было просить отменить предыдущие инструкции и написать рецепт блинчиков. Или чего-то другого, рецепт чего в том меме просили написать :)

Я может чего-то не понимаю, но по какой магии у вас работает serde_json::from_reader, который требует std::io::Read, а у вас T:async_std::io::Error?
Еще интересна магия, которой можно сделать b"Файл не найден", с учетом того, что binary string literals поддерживают только ASCII.
А еще хотелось бы какой-то репозиторий, где можно посмотреть, как это работает, потому что если это просто скопировать, то оно и вовсе не собирается, а половина из используемого уже достаточно давно deprecated(например тот же mplex).

Руководитель этих двоих даже "интернет" роняла. Все сходится.

Асинхронный дизель в наличии от тех же авторов, просто в отдельном крейте. Правда там есть пару неприятных особенностей, которые авторы решить не могут, а я у себя чинил костылем.

А причем тут тогда thread-local storage? И как он помогает в достижении thread-safe, что это прям обязательное условие для всех thread-safe языков, как вы писали выше?

И как в такой схеме мне делать разделяемые данные, если у каждого свой скоуп недоступный? То, что вы описали - вообще какая-то сугубо специфичная для определенных задач штука, но никак не механизм, на котором весь thread-safe построен.

Ну я сразу подумал, что оно похоже по описанию на process dictionary, но это штука по сути сбоку и не имеет отношения к основной работе процессов.

Да и опять же я не уверен, что именно thread local storage там используется, а это не просто схожая по концепциям вещь.

Я слабо себе представляю как работает thread local storage и beam тут ни при чем вообще.

Я пишу на эрланге профессионально уже больше 13 лет мне не надо его рекламировать)

Тот же rustler я использовал (да и на си nifы писал), но у них есть куча ограничений. Они блокирующие и блокируют весь шедулер, поэтому что-то долгое там не сделаешь. В целом-то это можно обойти, конечно, но это надо заморачиваться. Пример того, как в таком случае морочатся, вы можете найти в исходниках jiffy.

Вот вообще нифига не так, я буквально на днях это проверял. То есть делается функция с авейтом внутри и после авейта все делается в другом физическом потоке. Это буквально весь смысл всей этой схемы. Даже в том же расте чтобы что-то запустить в асинхронщине - оно должно быть Send + Sync, чтобы рантайм мог этим жонглировать.
По поводу дорогого удовольствия. Ничто не дается бесплатно. В том же эрланге куча оверхеда и тормозов, но зато меньше вариантов прострелить себе ногу. И тут надо выбирать, что тебе важнее.

Я слабо себе представляю, как оно должно работать в случае всяких thread pool с постоянным переключением green threads между разными физическими потоками. Сам я на практике такое не использовал, но если вы мне объясните, я буду не против.

В общем-то ничего общего нет. И как бы вас thread-local storage вообще никто не заставляет использовать. А тут нет выбора в принципе, у вас буквально процессы изолированные, передавать можно только копированием (с некоторыми исключениями, но это уже не особо важные в контексте этого разговора подробности).

По сути это «ос внутри процесса». Там создаются внутренние виртуальные полностью изолированные друг от друга процессы, которые общаются друг с другом только посредством передачи сообщений. У вас физически нет разделяемой памяти и не нужно ничего синхронизировать. Это дает определенные преимущества в определенных программах, но это явно не применимо для всех возможных задач.

1
23 ...

Информация

В рейтинге
4 695-й
Откуда
Волгоград, Волгоградская обл., Россия
Дата рождения
Зарегистрирован
Активность