- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
Как можно приостановить работу потока?
Sleep (dwMilliseconds) ;
WaitForSingleObject
(hHandle, dwMilliseconds) ;
WaitForMultipleObjects (nCount,*lpHandles, bWaitAll,dwMilliseconds);
dwMilliseconds={0.N. INFINITE}
ПРИМЕР 2
#include <process.h> #include <iostream>
void ThreadFunc( void * arg)
{
char **str= (char**)arg; std::cout <<str[0]<<std::endl;
std::cout<<str[1]<< std::endl;
_endthread( ); return ;
};
int main(int argc, char* argv[])
{char * InitStr1[2] = {"Firstthread running!","11111 char * InitStr2[2] = {"Second thread running!","22222 HANDLE hThreads[2];
hThreads[0] = (HANDLE)_beginthread(ThreadFunc,0, InitStr1); hThreads[1] = (HANDLE)_beginthread(ThreadFunc,0, InitStr2);
WaitForMultipleObjects(2, hThreads, TRUE, INFINITE ); CloseHandle( hThreads[0] );
CloseHandle( hThreads[1] ); return 0;
}
Объекты синхронизации
Мьюекс (Mutex)
Критическая секция (Criticalsection)
Событие ( Event)
Семафор (Semaphore)
Мьютекс. ПРИМЕР3
HANDLE hMutex;
int a[ 5 ];
void Thread( void* pParams)
{
int i, num = 0;
while ( TRUE )
{
WaitForSingleObject( hMutex, INFINITE ); for ( i = 0; i < 5; i++ ) a[ i ] = num;
ReleaseMutex( hMutex ); num++;
}
}
bInitialOwner = FALSE
int main( void )
{
hMutex = CreateMutex( NULL, FALSE, NULL );
_beginthread( Thread, 0, NULL );
while( TRUE )
{
WaitForSingleObject( hMutex, INFINITE ); printf( "%d %d %d %d %d\n",
a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ] );
ReleaseMutex( hMutex );
}
return
}