crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> weak_ptr from intrusive, свой велосипед
alexy
  опции профиля:
сообщение 15.4.2015, 0:02
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 4.8.2010
Пользователь №: 1931

Спасибо сказали: 0 раз(а)




Репутация:   0  


shared_ptr нельзя создать в конструкторе...
у меня сейчас в многопоточном коде часто появляются двухэтапные конструкторы. снчала создаешь shared_ptr потом вызываешь какой-нибудь registr или еще что-нибудь, куча отложенных созданий объектов, когда я бы мог создать его в конструкторе ,но создаю в фукнции ,которой он нужен, из-за этого появляются дополнительные проверки "не создал ли я его уже?", которых можно было бы избежать, если бы...
к тому же мне не нравится shared_from_this с точки зрения ООП, это как бы деталь реализации, закравшаяся в интерфейс.

может спасти intrusive_ptr, но у него нет weak_ptr и значит проблема циклических ссылок будет.

вобщем сегодня я накатал такой код. не уверен в правильности использвания std::atomic. выбрал shared_ptr для быстроты реализации. потом хочу сделать структуру, одно поле будет счетчиком ссылок для объекта, другое для weak_ptr'а.

выкладываю: может кому интересно или у кого-то уже есть свои проверенные наработки, лучше чем у меня, поделитесь пожалуйста.

зы: а что, нельзя загружать файлы hpp ??
Прикрепленные файлы
Прикрепленный файл  intrusive_weak_ptr.hpp.txt ( 3.67 килобайт ) Кол-во скачиваний: 394
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- alexy   weak_ptr from intrusive   15.4.2015, 0:02
- - lanz   Цитатаshared_ptr нельзя создать в конструкторе... ...   15.4.2015, 0:53
- - alexy   Цитата(lanz @ 15.4.2015, 1:53) Или чтобы ...   15.4.2015, 14:19
- - lanz   Цитатаа чем лучше? Separation of concerns, разделя...   15.4.2015, 14:58
|- - alexy   Цитата(lanz @ 15.4.2015, 15:58) Separatio...   15.4.2015, 15:48
- - lanz   Цитатаеще проблема с параметрами для инициализации...   15.4.2015, 16:11
- - Iron Bug   может, я не совсем понимаю идею, но чем не устраив...   16.4.2015, 9:17
- - lanz   Цитатаможет, я не совсем понимаю идею, но чем не у...   16.4.2015, 9:33
|- - alexy   Цитата(lanz @ 16.4.2015, 10:33) Просто ес...   16.4.2015, 13:44
- - Iron Bug   один фиг непонятно, чего хотели получить в итоге. ...   16.4.2015, 13:20
- - lanz   shared_ptr подразумевает некую семантику - когда s...   16.4.2015, 14:25
- - Iron Bug   а зачем делать auto sptr_ = new foo(); st...   16.4.2015, 14:29
|- - alexy   Цитата(Iron Bug @ 16.4.2015, 15:29) если ...   16.4.2015, 15:04
- - lanz   1. При такой архитектуре вы можете удалить виджет ...   16.4.2015, 15:15
|- - alexy   Цитата(lanz @ 16.4.2015, 16:15) 1. При та...   16.4.2015, 15:46
- - lanz   Цитата1. ну да.. а что в этом такого? Ничего, если...   16.4.2015, 18:17
- - Iron Bug   обычная схема перерисовки данных - это чтение данн...   17.4.2015, 11:24


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 8:36