Здравствуйте, гость ( Вход | Регистрация )
|
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 ??
Прикрепленные файлы
|
|
|
|
![]() |
|
Iron Bug |
17.4.2015, 11:24
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
обычная схема перерисовки данных - это чтение данных по сигналу обновления виджета. поток, получающий данные, складывает их в память. а поток, который отрисовывает виджет, берёт их оттуда. и не нужно никаких сильных-слабых указателей и прочих велосипедов.
|
|
|
|
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![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 22:05 |