- •1. Библиотеки. Статическая библиотека. Создание.
- •2. Библиотеки. Статическая библиотека. Использование.
- •3. Библиотека. Динамическая библиотека. Создание.
- •4. Библиотека. Динамическая библиотека. Статическая загрузка.
- •5. Библиотека. Динамическая библиотека. Динамическая загрузка.
- •7. Библиотеки. Динамическая библиотека. Сравнение способов загрузки.
- •8.Использование файлов при создании программы.
- •9. Позиционирование при работе с файлами. Функция.
- •10. Отображение файла на памяти. Назвать назначения параметров в функции.
- •11. Управление памятью. Для чего используется.
- •12.Блокирование памяти. В каком случае используется. Функции для блокирования.
- •13.Управление памятью. Для чего используют функции:
- •14. Для чего создаются процессы. Функции.
- •15. Назначение функций:
- •16. Асинхронный ввод/вывод:
- •17. Для чего используются потоки. Функции
- •18. Приоритеты процессов и потоков. Функции:
- •19. Синхронизация потоков. Interlocked функции. Назначение функций:
- •20. Синхронизация потоков. Критические секции. Функции.
- •21. Использование Event для синхронизации. Функции:
- •22. Использование Semaphore для синхронизации. Функции:
- •23. Использование WaitableTimerдля синхронизации. Функции:
- •24) Управление процессом. Планирование и диспетчеризация.
- •25) Использование Mutex для синхронизации. Функции.
- •26) Сравнение сегментной и страничной адресации
- •27) Страничная организация памяти.
- •29) Локальная память компьютеров. Функции
- •30. Соглашения по вызову, объяснить следующие с, срр, fastcall, stdcall. Дайте рекомендации по использованию соглашения.
17. Для чего используются потоки. Функции
Потоки и процессы — это связанные понятия в вычислительной технике. Оба представляют из себя последовательность инструкций, которые должны выполняться в определенном порядке. Инструкции в отдельных потоках или процессах, однако, могут выполняться параллельно.
Процессы существуют в операционной системе и соответствуют тому, что пользователи видят как программы или приложения. Поток, с другой стороны, существует внутри процесса. По этой причине потоки иногда называются "облегченные процессы".Каждый процесс состоит из одного или более потоков.
Существование нескольких процессов позволяет компьютеру "одновременно" выполнять несколько задач. Существование нескольких потоков позволяет процессу разделять работу для параллельного выполнения. На многопроцессорном компьютере процессы или потоки могут работать на разных процессорах. Это позволяет выполнять реально параллельную работу.
Чтобы создать поток нужно воспользоваться функцией:
HANDLE WINAPI CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, //указатель на структуру
SIZE_T dwStackSize, //размер стека
LPTHREAD_START_ROUTINE lpStartAddress, //адрес на имя потоковой ф-ции
LPVOID lpParameter, //адрес параметра пот. ф-ции
DWORD dwCreationFlags, //флаг
LPDWORD lpThreadId //id потока
);
Чтобы завершить поток нужно воспользоваться функцией:
DWORD WINAPI WaitForMultipleObject(
DWORD nCount, //размер массива
const HANDLE *lpHandles, //массив дескрипторов
BOOL bWaitAll, //TRUE – завершение всех, FALSE – завершение одного
DWORD dwMilliseconds //время ожидание
);
18. Приоритеты процессов и потоков. Функции:
Для установки класса приоритета для указанного процесса следует воспользоваться функцией:
BOOL WINAPI SetPriorityClass(
HANDLE hProcess, //Дескриптор процесса
DWORD dwPriorityClass //Класс приоритета
);
Классы приоритетов:
ABOVE_NORMAL_PRIORITY_CLASS //Класс приоритета, где процесс который имеет приоритет выше нормального, но ниже высокого класса
BELOW_NORMAL_PRIORITY_CLASS //Класс приоритета, где процесс имеет приоритет выше IDLE, но ниже нормального
HIGH_PRIORITY_CLASS, //Класс приоритета, где процесс с самым высоким приоритетом, должен выполнять срочные задачи, которые не могут ожидать
IDLE_PRIORITY_CLASS //Класс приоритета, где процесс который работает только когда система находится в режиме ожидания
NORMAL_PRIORITY_CLASS, //Класс приоритета, где процесс есть с обычным(нормальным) приоритетом
REALTIME_PRIORITY_CLASS //Класс приоритета, где процесс есть с приоритетом реального времени, упреждает процессы операционной системы.
Для установки приоритета потока необходимо воспользоваться функцией
BOOL WINAPI SetThreadPriority(
HANDLE hThread, //Дескриптор потока
int nPriority //Значение приоритета
);
Значения приоритетов:
THREAD_PRIORITY_ABOVE_NORMAL //1 – выше нормального
THREAD_PRIORITY_BELOW_NORMAL //-1 – ниже нормального
THREAD_PRIORITY_HIGHEST //2 – высокий приоритет
THREAD_PRIORITY_IDLE //-15 – самый низкий приоритет (в режиме ожидания)
THREAD_PRIORITY_LOWEST //-2 – Низкий приоритет потока
THREAD_PRIORITY_NORMAL //0 – обыкновенный (нормальный) приоритет
THREAD_PRIORITY_TIME_CRITICAL //15 – приоритет реального времени.