Здравствуйте, Lazin, Вы писали:
C>>Есть. L>И что же?
Исключения, коды возврата и т.д.
C>>И какие навороченные алгоритмы используют TLS? L>Сложно найти то что не использует TLS, вот пара примеров на вскидку
Странные примеры.
L>https://github.com/jemalloc/jemalloc
Будет прекрасно работать с Rust (собственно, УЖЕ работает), так как там TLS для внутренних нужд.
L>https://github.com/facebook/folly/blob/72c2a0d3b47de74dd56b6750922e54ef333b4cbd/folly/ThreadCachedInt.h
И где оно есть?
L>По поводу errno — можно конечно обойтись без TLS, но часто это усложняет архитектуру и перекладывает на программиста ответственность, так как состояние, вынесенное из TLS в переменную и которым теперь управляет программист — не должно передаваться от одного потока другому.
errno должен умереть, это кривой хак для С, не поддерживающего множественные результаты возврата. Он прекрасно заменяется исключениями или кодами возврата.
Здравствуйте, Cyberax, Вы писали:
C>>>Есть. L>>И что же? C>Исключения, коды возврата и т.д.
Часто TLS используется для уменьшения количества взаимодействий между потоками, тот же jemalloc, при вызове malloc сначала лезет в арену, адрес которой берется из TLS, а уже потом, если там нет памяти — в общий пулл. Просто TLS быстрее чем contended lock, поэтому часто алгоритмы строят таким образом. Ни исключения ни коды возврата тут использовать не получится. И таки да, в случае с errno, использование TLS это хак, но это нестандартное использование.
C>Странные примеры.
Ты просил пример навороченного параллельного алгоритма — параллельный allocator это и есть такой алгоритм, что не так?
Взялся поиграться с языком. И появился вопрос — почему математические функции сделали методами, а не отдельными функциями?
Т.е. x.sqrt() вместо привычного sqrt(x). И если с функцифми одного параметра это еще хоть как-то смотрится, то x.atan2(y) или a.mul_add(b,c) выглядит совсем уж инопланетно.
Причем в некоторых старых примерах еще можно найти варианты с внешними функциями, но у меня (свежий nightly) они уже не компилируется. Зачем это поменяли?
Здравствуйте, rusted, Вы писали:
R>Зачем это поменяли?
Подобные изменения, той или иной степени идиотзма, там появляются регулярно, так же регулярно исчезают. На мой взгляд авторы просто экспериментируют, т.к. после релиза обещали заморозить API.
Здравствуйте, MTD, Вы писали:
MTD>Ну надо же что-то делать (С) А вообще думаю еще один пшик будет, я уже перестал понимать логику разработчиков.
Ну, с учетом текущей реализации C++11 и планов на C++14/17 смыслу в Rust становится все меньше и меньше. Но, его плюшек всяко нигде больше нет и не будет в ближайшем будущем.