🗊Презентация Управление ресурсами

Нажмите для полного просмотра!
Управление ресурсами, слайд №1Управление ресурсами, слайд №2Управление ресурсами, слайд №3Управление ресурсами, слайд №4Управление ресурсами, слайд №5Управление ресурсами, слайд №6Управление ресурсами, слайд №7Управление ресурсами, слайд №8Управление ресурсами, слайд №9Управление ресурсами, слайд №10Управление ресурсами, слайд №11Управление ресурсами, слайд №12Управление ресурсами, слайд №13Управление ресурсами, слайд №14Управление ресурсами, слайд №15Управление ресурсами, слайд №16Управление ресурсами, слайд №17Управление ресурсами, слайд №18Управление ресурсами, слайд №19Управление ресурсами, слайд №20Управление ресурсами, слайд №21Управление ресурсами, слайд №22Управление ресурсами, слайд №23Управление ресурсами, слайд №24Управление ресурсами, слайд №25Управление ресурсами, слайд №26Управление ресурсами, слайд №27Управление ресурсами, слайд №28Управление ресурсами, слайд №29

Содержание

Вы можете ознакомиться и скачать презентацию на тему Управление ресурсами. Доклад-сообщение содержит 29 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Управление 
ресурсами
Описание слайда:
Управление ресурсами

Слайд 2


Управление ресурсами, слайд №2
Описание слайда:

Слайд 3





Физические ресурсы
Процессор
Оперативная память
Жесткий диск
Сетевой адаптер
Видеокарта
Звуковая карта
Устройства ввода/вывода (клавиатура, мышь, принтер, сканер и т.п.)
Описание слайда:
Физические ресурсы Процессор Оперативная память Жесткий диск Сетевой адаптер Видеокарта Звуковая карта Устройства ввода/вывода (клавиатура, мышь, принтер, сканер и т.п.)

Слайд 4





Виртуальные ресурсы
Виртуальная память
Файлы
Сокеты
Объекты синхронизации (мьютекс, критическая секция, семафор и т.п.)
Объекты межпроцессного взаимодействия (pipes, mapped files, mailslots и т.п.)
Аттрибуты безопасности, дескрипторы объектов ОС и т.п.
Описание слайда:
Виртуальные ресурсы Виртуальная память Файлы Сокеты Объекты синхронизации (мьютекс, критическая секция, семафор и т.п.) Объекты межпроцессного взаимодействия (pipes, mapped files, mailslots и т.п.) Аттрибуты безопасности, дескрипторы объектов ОС и т.п.

Слайд 5





C++ storage duration categories
Static – глобальные переменные, статические локальные переменные, статические члены классов. Создаются при запуске приложения и разрушаются при выходе.
Thread storage (C++ 11) – переменные, доступные только в потоке (обозначаются ключевым словом thread_local). Создаются при старте потока, разрушаются при завершении его работы.
Automatic – локальные переменные. Разрушаются на выходе из блока, в котором они созданы.
 Dynamic – создаются при помощи операторов new и разрушаются при помощи операторов delete.
Описание слайда:
C++ storage duration categories Static – глобальные переменные, статические локальные переменные, статические члены классов. Создаются при запуске приложения и разрушаются при выходе. Thread storage (C++ 11) – переменные, доступные только в потоке (обозначаются ключевым словом thread_local). Создаются при старте потока, разрушаются при завершении его работы. Automatic – локальные переменные. Разрушаются на выходе из блока, в котором они созданы. Dynamic – создаются при помощи операторов new и разрушаются при помощи операторов delete.

Слайд 6





Объекты с автоматической продолжительностью хранения
Преимущества:
1. Быстрое выделение памяти.
2. Объекты на стеке автоматически разрушаются при выходе из области видимости.
Недостатки:
1. Размер стека ограничен (по умолчанию в Visual C++ 1Mb для каждого потока).
2. Нужно знать размер объекта на этапе компиляции.
3. Стеком сложнее управлять.
Описание слайда:
Объекты с автоматической продолжительностью хранения Преимущества: 1. Быстрое выделение памяти. 2. Объекты на стеке автоматически разрушаются при выходе из области видимости. Недостатки: 1. Размер стека ограничен (по умолчанию в Visual C++ 1Mb для каждого потока). 2. Нужно знать размер объекта на этапе компиляции. 3. Стеком сложнее управлять.

Слайд 7





Специальные методы классов
1. Версии конструкторов копирования и операторов присваивания, генерируемые компилятором, осуществляют “shallow copy” членов. Необходимо переопределять их, если такое поведение неверно.
class Test {
    int* m_data;
    Test(const Test& other) {
        m_data = new int(*other.m_data);        
    }
};
Описание слайда:
Специальные методы классов 1. Версии конструкторов копирования и операторов присваивания, генерируемые компилятором, осуществляют “shallow copy” членов. Необходимо переопределять их, если такое поведение неверно. class Test { int* m_data; Test(const Test& other) { m_data = new int(*other.m_data); } };

Слайд 8





Специальные методы классов
2. Проверяйте в операторе присваивание случай самоприсваивания:
Test& operator=(const Test& other) {
        if (this != &other) {
            delete m_data;
            m_data = new int(*other.m_data);
        }
        return *this;
}
Описание слайда:
Специальные методы классов 2. Проверяйте в операторе присваивание случай самоприсваивания: Test& operator=(const Test& other) { if (this != &other) { delete m_data; m_data = new int(*other.m_data); } return *this; }

Слайд 9





Общая схема работы с ресурсами
Захватить ресурс (open, create, allocate, attach)
Использовать ресурс
Освободить ресурс (close, free, delete, detach)
Внимание:
Если операция захвата ресурса возвращает статус успешности, всегда проверяйте его.
Используйте правильную операцию для освобождения ресурса
Описание слайда:
Общая схема работы с ресурсами Захватить ресурс (open, create, allocate, attach) Использовать ресурс Освободить ресурс (close, free, delete, detach) Внимание: Если операция захвата ресурса возвращает статус успешности, всегда проверяйте его. Используйте правильную операцию для освобождения ресурса

Слайд 10





Захват ресурса без освобождения
Описание слайда:
Захват ресурса без освобождения

Слайд 11





“Ручное” управление ресурсами
Описание слайда:
“Ручное” управление ресурсами

Слайд 12





Stack unwinding
Описание слайда:
Stack unwinding

Слайд 13





Использование RAII (guards)
Описание слайда:
Использование RAII (guards)

Слайд 14





std::auto_ptr
Описание слайда:
std::auto_ptr

Слайд 15





std::auto_ptr
Недостатки:
Не может использоваться в контейнерах STL.
Не может быть использован с new[].
Неочевидная передача владения (при копировании и передаче в качестве параметра функции по значению).
Нельзя использовать с другими типами ресурсов, отличными от памяти.
Описание слайда:
std::auto_ptr Недостатки: Не может использоваться в контейнерах STL. Не может быть использован с new[]. Неочевидная передача владения (при копировании и передаче в качестве параметра функции по значению). Нельзя использовать с другими типами ресурсов, отличными от памяти.

Слайд 16





std::unique_ptr
Описание слайда:
std::unique_ptr

Слайд 17





std::unique_ptr
Описание слайда:
std::unique_ptr

Слайд 18





std::unique_ptr
Описание слайда:
std::unique_ptr

Слайд 19





std::make_unique
Описание слайда:
std::make_unique

Слайд 20





std::shared_ptr
Описание слайда:
std::shared_ptr

Слайд 21





std::shared_ptr
Описание слайда:
std::shared_ptr

Слайд 22





Внутреннее устройство shared_ptr
Описание слайда:
Внутреннее устройство shared_ptr

Слайд 23





Пример использования weak_ptr
Описание слайда:
Пример использования weak_ptr

Слайд 24





Передача smart pointers как аргумента
Описание слайда:
Передача smart pointers как аргумента

Слайд 25





Передача smart pointers как аргумента
Описание слайда:
Передача smart pointers как аргумента

Слайд 26





Контейнеры
void FillBuffer(
   void* pBuffer, 
   size_t bufferSize);
// version with raw ponter
uint8_t *buf = new uint8_t[size];
FillBuffer(buf, size);
delete[] buf;
Описание слайда:
Контейнеры void FillBuffer( void* pBuffer, size_t bufferSize); // version with raw ponter uint8_t *buf = new uint8_t[size]; FillBuffer(buf, size); delete[] buf;

Слайд 27





Контейнеры
// First DLL
vector<Message> messages;
FillMessages(messages);
Описание слайда:
Контейнеры // First DLL vector<Message> messages; FillMessages(messages);

Слайд 28





Exception safety
1. Базовая гарантия – контейнер при возникновении исключения остается в согласованном состоянии; нет утечек ресурсов (пример – вставка диапазона элементов).
2. Строгая гарантия – либо операция заканчивается успешно, либо она не выполняется вообще (пример vector::push_back).
3. No-throw (nofail) гарантия – операция всегда заканчивается успешно (пример std::swap).
Гарантия предоставляется, если код, предоставляемый пользователем, не оставляет элементы контейнера в недопустимом состоянии; не приводит к утечкам ресурсов и деструкторы не кидают исключений.
Описание слайда:
Exception safety 1. Базовая гарантия – контейнер при возникновении исключения остается в согласованном состоянии; нет утечек ресурсов (пример – вставка диапазона элементов). 2. Строгая гарантия – либо операция заканчивается успешно, либо она не выполняется вообще (пример vector::push_back). 3. No-throw (nofail) гарантия – операция всегда заканчивается успешно (пример std::swap). Гарантия предоставляется, если код, предоставляемый пользователем, не оставляет элементы контейнера в недопустимом состоянии; не приводит к утечкам ресурсов и деструкторы не кидают исключений.

Слайд 29





Another guards
1. Часы и таймеры STL.
2. Потоки STL (std::thread, std::mutex, std::lock, etc.).
3. Потоки ввода вывода STL (input/output streams).
4. «Стражи» в ATL (CComPtr, CComSafeArray, СComBSTR, CComVariant)
5. «Стражи» в boost (scoped_ptr, scoped_array, share_array)
Описание слайда:
Another guards 1. Часы и таймеры STL. 2. Потоки STL (std::thread, std::mutex, std::lock, etc.). 3. Потоки ввода вывода STL (input/output streams). 4. «Стражи» в ATL (CComPtr, CComSafeArray, СComBSTR, CComVariant) 5. «Стражи» в boost (scoped_ptr, scoped_array, share_array)



Похожие презентации
Mypresentation.ru
Загрузить презентацию