&T отличается от Arc<T> только тем что не даёт thread-safety

и полное владение?

7 ответов

22 просмотра

& - просто ссылка Arc - в простонародии счетчик ссылок & естественно значением не владеет, а только ссылается на него, просто копируется Arc хранит в себе значение, мувится, клонится. при клонировании счетчик +1, при удалении счетчик -1 & не изменчив, бери &mut Arc изменчив если счетчик =1

Thread safety тут ортогонально. Главное — то, что Arc сам по себе не даёт времени жизни. Ну и оверхед имеет на безусловную аллокацию и атомарный подсчёт ссылок

Nickolai Burtsev 👀- Автор вопроса
Антон 🇦🇲
Thread safety тут ортогонально. Главное — то, что ...

Что-то не совсем понял, читать &T с разных поток безопасно?

Nickolai Burtsev 👀- Автор вопроса
Антон 🇦🇲
Да, если T реализует Sync

Хорошо, тогда вопрос, у меня есть неизменяемое состояние типа T, где T: Sync, Как мне лучше его передавать потокам, Arc<T> или &T (владение не требуется)?

Nickolai Burtsev 👀
Хорошо, тогда вопрос, у меня есть неизменяемое сос...

У потоков нет проблем с приёмом ссылок, которые Send, но в стд они требуют 'static лайфтайм в связи с апи JoinHandle, которое не гарантирует ожидание выполнения. Если нужны ссылки в безопасном коде в многопотоке, используй crossbeam scoped threads (или подожди 3 месяца, пока их добавят в стейбл)

Nickolai Burtsev 👀
Хорошо, тогда вопрос, у меня есть неизменяемое сос...

Через Arc, меньше головняка будет. Но если у тебя все потоки завершаются раньше, чем тот, из которого они порождены, то имеет смысл использовать scoped threads из crossbeam

Похожие вопросы

Обсуждают сегодня

Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
5
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Ребята привет. Telegraf 3.38 актуален ещё или лучше обновиться?
𝙊𝑙ẽ𝘨 // Rabbit Hole
2
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Товарищи, я с вопросом На сколько мне известно, это, конечно, зависит от того, как программа использует процессор, но у меня всё равно остаётся вопрос Допустим, есть 2 проце...
Shen
1
Визуальное отображение моделей таблиц sql какое посоветуете?
Shen
7
Коллеги, здравствуйте Подскажите, пожалуйста. я почему-то всегда думал, что если переходить по ссылке такого формата(t.me/bot_bot?start=1) на бота. То бот сразу прожимает кн...
Artem Stormageddon
3
Карта сайта