На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
Страницы: (16) « Первая ... 12 13 [14] 15 16  все  ( Перейти к последнему сообщению )  
> Thread-safe shared_ptr , Реализация потоко-безопасного SharedPtr
    Цитата Олег М @
    И разъяснить проблему в более доступных терминах, например в терминах мьютексов.

    Ну вот тут про барьеры памяти на русском.
      Цитата Flex Ferrum @
      Я привык применять weak_ptr в тех местах, где мне нужно ссылаться на shared_ptr, но копия самого shared_ptr не нужна или опасна (по тем или иным причинам)

      И как ты в этом случае обеспечиваешь блокировку?
        Цитата Олег М @
        И как ты в этом случае обеспечиваешь блокировку?

        Какую блокировку? Я не совсем тебя понимаю.
          weak-ptr::lock.
            Цитата Олег М @
            weak-ptr::lock.

            А зачем мне делать этот lock, если у меня нет weak_ptr, а есть живой shared_ptr, с которого просто снимается копия? Или ты считаешь, что shared_ptr без weak_ptr нельзя использовать?
              Если у тебя есть живой shared_ptr, то тебе и слабый указатель не нужен. Однако, если у тебя есть weak_ptr, то тут тебе нужно обеспечить синхронизацию.
                Цитата Олег М @
                Если у тебя есть живой shared_ptr, то тебе и слабый указатель не нужен. Однако, если у тебя есть weak_ptr, то тут тебе нужно обеспечить синхронизацию.

                Возвращаемся к середине. А для чего мне нужен weak_ptr? Кроме того, с моим примером ты можешь сделать так:
                ExpandedWrap disabled
                  std::weak_ptr<std::string> wp(obj.Lock());

                и всё будет работать. Гонок не будет до тех пор, пока ты не начнёшь в разных потоках модифицировать один и тот же weak_ptr. А ты, по идее, не начнёшь. У тебя для передачи данных obj есть.
                  Цитата OpenGL @

                  Ну вот тут про барьеры памяти на русском.

                  То, что на русском, это уже хорошо. Но, как то бы более популярно. Т.е. просто сказать – вот в этих случаях делай так, а вот в этих так не делай.

                  Добавлено
                  Цитата Flex Ferrum @
                  Кроме того, с моим примером ты можешь сделать так:


                  Вопрос, что мне потом делать с этим weak_ptr ?

                  Добавлено
                  Если я его не могу использоать в другом потоке
                    Цитата Олег М @
                    Вопрос, что мне потом делать с этим weak_ptr ?

                    Так это ведь тебе он для чего-то нужен. Значит, ты знаешь - для чего. В моём (модифицированном твоём) примере для обмена данными используется не weak_ptr, а этот вот наколхоженный объект. И... Всё работает. :) Мне weak_ptr не нужен, поэтому что с ним делать - я сказать не могу. :)
                      Ну, например можно избавиться от функции Unsubscribe.
                        Я не знаю, что такое функция Unsubscribe. :) А если подключу свою телепатию и рискну предположить, о чём речь, то... Эмм... Я бы не стал от неё избавляться.
                          Думаю, ты понял об чем речь. С планшета опять пишу.

                          Добавлено
                          WeakPtr позволяет за константное время узнать, жив объект, на который он ссылается или нет. По–моему неплохое свойство
                            Цитата Олег М @
                            WeakPtr позволяет за константное время узнать, жив объект, на который он ссылается или нет. По–моему неплохое свойство

                            Есть ещё как минимум два способа узнать это и оба - за константное время. Тут от сценария использования надо плясать, а не от того, что хочется использоватью
                              Ну, как ты видишь, здесь я обеспечиваю тебе константное время вне зависимости от сценария
                                Олег М, проверить use_count или вызвать empty у shared_ptr - это константное время. В чём суть проблемы то? Чего лечим?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0511 ]   [ 16 queries used ]   [ Generated: 28.04.24, 13:03 GMT ]