- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
Критические секции ПРИМЕР4
CRITICAL_SECTION cs; int a[ 5 ];
void Thread( void* pParams )
{
int i, num = 0;
while ( TRUE )
{
EnterCriticalSection( &cs); for ( i = 0; i < 5; i++ )
a[ i ] = num;
LeaveCriticalSection( &cs num++;
}
}
int main( void )
{
InitializeCriticalSection( &cs );
_beginthread( Thread, 0, NULL );
while( TRUE )
{
EnterCriticalSection( &cs ); printf( "%d %d %d %d %d\n", a[ 0 ], a[ 1 ], a[ 2 ],
a[ 3 ], a[ 4 ] );
События. ПРИМЕР5
HANDLE hEvent1, hEvent2; |
int main( void ) |
|
int a[ 5 ]; |
||
|
{ |
|
void Thread( void* pParams) |
hEvent1 = CreateEvent( NULL,FALSE, TRUE, NULL ); |
|
hEvent2 = CreateEvent( NULL, FALSE, FALSE, NULL ); |
||
{ |
||
|
||
int i, num = 0; |
_beginthread( Thread, 0, NULL ); |
|
while ( TRUE ) |
while( TRUE ) |
|
{ |
{ |
|
WaitForSingleObject( hEvent1, INFINITE ); |
||
|
||
WaitForSingleObject( hEvent2, INFINITE ); printf( "%d %d %d %d %d\n", |
||
for ( i = 0; i < 5; i++ ) a[ i ] = num; |
a[ 0 ], a[ 1 ], a[ 2 ], |
|
SetEvent( hEvent1); |
a[ 3 ], a[ 4 ] ); |
|
num++; |
SetEvent( hEvent2 ); |
|
} |
} |
|
return 0; |
||
|
} |
} |
|
SetEvent
PulseEvent
ReversEvent
Семафоры. ПРИМЕР6
class CMyClass
{HANDLE m_hSemaphore; public:
CMyClass()
{m_hSemaphore = CreateSemaphore(NULL, 0, 1000, NULL);} ~CMyClass()
{ CloseHandle( m_hSemaphore);} void AddItem(void * NewItem)
{
// Добавляемэлементв очередь
ReleaseSemaphore(m_hSemaphore,1, NULL);
}
void GetItem(void * Item)
{
WaitForSingleObject(m_hSemaphore,INFINITE);
};
// Удаляемэлементиз очереди
}
}
ОСНОВНЫЕ ПОНЯТИЯ И ПОДХОДЫ
Технология
программирования
совокупность методов, средств и процедур, используемых в процессе разработки программногообеспечения.