Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.156.156] |
|
Страницы: (16) « Первая ... 12 13 [14] 15 16 все ( Перейти к последнему сообщению ) |
Сообщ.
#196
,
|
|
|
Ну вот тут про барьеры памяти на русском. |
Сообщ.
#197
,
|
|
|
Цитата Flex Ferrum @ Я привык применять weak_ptr в тех местах, где мне нужно ссылаться на shared_ptr, но копия самого shared_ptr не нужна или опасна (по тем или иным причинам) И как ты в этом случае обеспечиваешь блокировку? |
Сообщ.
#198
,
|
|
|
Цитата Олег М @ И как ты в этом случае обеспечиваешь блокировку? Какую блокировку? Я не совсем тебя понимаю. |
Сообщ.
#199
,
|
|
|
weak-ptr::lock.
|
Сообщ.
#200
,
|
|
|
Цитата Олег М @ weak-ptr::lock. А зачем мне делать этот lock, если у меня нет weak_ptr, а есть живой shared_ptr, с которого просто снимается копия? Или ты считаешь, что shared_ptr без weak_ptr нельзя использовать? |
Сообщ.
#201
,
|
|
|
Если у тебя есть живой shared_ptr, то тебе и слабый указатель не нужен. Однако, если у тебя есть weak_ptr, то тут тебе нужно обеспечить синхронизацию.
|
Сообщ.
#202
,
|
|
|
Цитата Олег М @ Если у тебя есть живой shared_ptr, то тебе и слабый указатель не нужен. Однако, если у тебя есть weak_ptr, то тут тебе нужно обеспечить синхронизацию. Возвращаемся к середине. А для чего мне нужен weak_ptr? Кроме того, с моим примером ты можешь сделать так: std::weak_ptr<std::string> wp(obj.Lock()); и всё будет работать. Гонок не будет до тех пор, пока ты не начнёшь в разных потоках модифицировать один и тот же weak_ptr. А ты, по идее, не начнёшь. У тебя для передачи данных obj есть. |
Сообщ.
#203
,
|
|
|
Цитата OpenGL @ Ну вот тут про барьеры памяти на русском. То, что на русском, это уже хорошо. Но, как то бы более популярно. Т.е. просто сказать – вот в этих случаях делай так, а вот в этих так не делай. Добавлено Цитата Flex Ferrum @ Кроме того, с моим примером ты можешь сделать так: Вопрос, что мне потом делать с этим weak_ptr ? Добавлено Если я его не могу использоать в другом потоке |
Сообщ.
#204
,
|
|
|
Цитата Олег М @ Вопрос, что мне потом делать с этим weak_ptr ? Так это ведь тебе он для чего-то нужен. Значит, ты знаешь - для чего. В моём (модифицированном твоём) примере для обмена данными используется не weak_ptr, а этот вот наколхоженный объект. И... Всё работает. Мне weak_ptr не нужен, поэтому что с ним делать - я сказать не могу. |
Сообщ.
#205
,
|
|
|
Ну, например можно избавиться от функции Unsubscribe.
|
Сообщ.
#206
,
|
|
|
Я не знаю, что такое функция Unsubscribe. А если подключу свою телепатию и рискну предположить, о чём речь, то... Эмм... Я бы не стал от неё избавляться.
|
Сообщ.
#207
,
|
|
|
Думаю, ты понял об чем речь. С планшета опять пишу.
Добавлено WeakPtr позволяет за константное время узнать, жив объект, на который он ссылается или нет. По–моему неплохое свойство |
Сообщ.
#208
,
|
|
|
Цитата Олег М @ WeakPtr позволяет за константное время узнать, жив объект, на который он ссылается или нет. По–моему неплохое свойство Есть ещё как минимум два способа узнать это и оба - за константное время. Тут от сценария использования надо плясать, а не от того, что хочется использоватью |
Сообщ.
#209
,
|
|
|
Ну, как ты видишь, здесь я обеспечиваю тебе константное время вне зависимости от сценария
|
Сообщ.
#210
,
|
|
|
Олег М, проверить use_count или вызвать empty у shared_ptr - это константное время. В чём суть проблемы то? Чего лечим?
|