172 похожих чатов

Какая причина что Arc имеет Send, только при T: Send

+ Sync?
unsafe impl<T: ?Sized + Sync + Send> Send for Arc<T> {}

6 ответов

11 просмотров

Два арка в разных потоках означает, что мы можем вызывать методы T из разных потоков одновременно, а Sync как-раз и обозначает, что можно это делать.

Артем-Пятницкий Автор вопроса
red75prime
Два арка в разных потоках означает, что мы можем в...

Я же правильно понимаю что Send это только про передачу в другой тред? Без sync я даже прочитать не могу, верно? Просто зачем мне sync на arc: Send, если я хочу просто его передать?

Артем Пятницкий
Я же правильно понимаю что Send это только про пер...

Компилятор не может гарантировать, что есть только один Arc<T>, указывающий на объект. Значит не может гарантировать, что доступ к T будет осуществляться только из одного потока. А если доступ к T может осуществляться из нескольких потоков, то для этого нужно T: Sync

Артем-Пятницкий Автор вопроса
red75prime
Компилятор не может гарантировать, что есть только...

Я просто не понимаю зачем нужно ограничение + Sync для реализации Send, почему это ограничение есть не только для Sync, но и для Send?

Потому что Arc при клонировании и передаче успешно делится ссылками на T опосредованно, через Deref.

Артем-Пятницкий Автор вопроса
Traveller Kolsky
Потому что Arc при клонировании и передаче успешно...

Вот после того как я узнал что &T: Send когда T: Send + Sync, то теперь стало понятно, что Arc для ссылки это требует

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Подскажите пожалуйста, а я могу вот такую штуку использовать? rpc, только реализованное в реббите https://www.rabbitmq.com/tutorials/tutorial-six-php ( или https://habr.com/ru...
Artyom
11
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
Парни, спасайте. RAD Studio 12 творит какую-то дичь. У меня есть метод (event), который вызывает другой метод, т.е. он состоит из 1-й строки вызова. Ставлю бряк на event, запу...
Eugene Krasnikov (ᴊɪɴ x)
3
Карта сайта