Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка многопоточных объектно-ориентированных, совместимы ли ООП и многопоточность?  
:(
    Опции темы
baldina
Дата 4.4.2014, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



k0rvin, отлично! 

Цитата(Lukkoye @  3.4.2014,  23:44 Найти цитируемый пост)
Вот мне не понятно: в отношении к с++, как понять "raii -это паттерн"

чего тут непонятного. 
Цитата(Lukkoye @  3.4.2014,  23:06 Найти цитируемый пост)
Слово "паттерн" я понимаю, как "решение", которое наиболее практичным образом решает некоторую проблему.

вот так и следует понимать: raii можно реализовать известным образом встроенными средствами c++ для решения проблемы управления ресурсами. собственно скелет паттерна выглядит так
Код

struct Foo {
   Foo() { /* захватить ресурс */ }
   ~Foo() { /* освободить ресурс */  }
};

void bar () {
  Foo foo; // <-- захват ресурса
  do_something();
} // <-- автоматическое освобождение ресурса, даже в случае исключения

что касается слов "raii это идиома", их следует понимать так: raii - это устойчивое выражение, имеющее смысл обсуждаемой технологии управления ресурсами. не следует искать смысл в словах самого выражения Resource acquisition is initialization, они условны. "идиома" - лингвистическое понятие, а не техническое.

Это сообщение отредактировал(а) baldina - 4.4.2014, 15:44
PM MAIL   Вверх
vinter
Дата 4.4.2014, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(baldina @  2.4.2014,  23:10 Найти цитируемый пост)
да это и не нужно, многопоточность - не часть языка, а часть стандартной библиотеки.

Видимо нужно: сейчас очень активно "пилят" транзакционную модель памяти, может к 17 году и допилят

Цитата(baldina @  2.4.2014,  23:10 Найти цитируемый пост)
GC тоже нет, 

GC есть в C++, но "необязательный"


--------------------
Мой блог
PM MAIL WWW   Вверх
Lukkoye
Дата 4.4.2014, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 23.3.2013

Репутация: 1
Всего: 1



Цитата(baldina @  4.4.2014,  15:36 Найти цитируемый пост)
вот так и следует понимать: raii можно реализовать известным образом встроенными средствами c++ для решения проблемы управления ресурсами.


Ааа... понял о чем вы.

Только вот вы слегка путаетесь в понятиях.

Раии - идеома. 
Вот "реализация идеомы" - это уже технология, которая реализована за счет компиляторов.

То, что вы показали выше  - это не пример реализация раии. Реализация раии, грубо говоря внутри компилятора.

То, что вы показали - это пример одного из возможных использований особенностей раии. 
А сам паттерн, если не ошибаюсь, называется "scope guard".

Ну да бог с ним, не суть это все буквоедство.
Я понял вашу точку зрения.





PM MAIL   Вверх
baldina
Дата 5.4.2014, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(Lukkoye @  4.4.2014,  21:13 Найти цитируемый пост)
 вы слегка путаетесь в понятиях

идиома
паттерн
raii

вроде бы не я путаюсь. "raii зашит в компилятор" - это забавная точка зрения. отчего тогда в программах на с++ возникают утечки ресурсов?

Добавлено через 6 минут и 56 секунд
сейчас вы будете мне рассказывать, что компилятор вставляет вызовы конструкторов и деструкторов, и они вызываются автоматически, только это семантика не raii, а конструкторов и деструкторов. с помощью которых мы можем следовать raii или наплевать на него.
Код

struct Foo () {
   int *p;
   Foo () : p_(new int){}
};

void bar () {
  Foo foo;
} // <-- утечка


Это сообщение отредактировал(а) baldina - 5.4.2014, 15:02
PM MAIL   Вверх
baldina
Дата 5.4.2014, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



PM MAIL   Вверх
Lukkoye
Дата 6.4.2014, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 23.3.2013

Репутация: 1
Всего: 1



Цитата(baldina @  5.4.2014,  14:59 Найти цитируемый пост)
вроде бы не я путаюсь. "raii зашит в компилятор" - это забавная точка зрения. отчего тогда в программах на с++ возникают утечки ресурсов?


Потому что язык с++  - это мультипарадигменный высокоуровневый ассемблер с прямым доступом к памяти.

Идеома raii в нем реализована за счет автоматических экземпляров классов - объектов, для которых конструктор и диструктор вызываются автоматически. 

Однако, язык не заставляет обязательно использовать автоматические экземпляры классов, равно как и вообще писать в оо-стиле. На этом языке вы можете писать в самых разных стилях, например: в стиле си.

Поэтому, я так отвечу на ваш вопрос: утечки в программах на с++ возникают потому, что некоторые товарищи используют низкоуровневую ручную работу и пишут суржик в стиле си, вместо того,
что бы использовать всю мощь объектно ориентированного с++ вкупе с его стандартной библиотекой.


Это сообщение отредактировал(а) Lukkoye - 6.4.2014, 13:33
PM MAIL   Вверх
xvr
Дата 7.4.2014, 14:26 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



1 троль + 1 провокационный вопрос = 3 страницы переливания из пустого в порожнее, местами переходящее во флейм  smile 

PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.