Программа запускает поток с помощью системной функции CreateThread и передает ему параметр из переменной ThreadParameter. — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Программа запускает поток с помощью системной функции CreateThread и передает ему параметр из переменной ThreadParameter.

2017-06-19 374
Программа запускает поток с помощью системной функции CreateThread и передает ему параметр из переменной ThreadParameter. 0.00 из 5.00 0 оценок
Заказать работу

В качестве потока запускается подпрограмма MyThread.

Практическая часть

//Практическое занятие № 24

//Группа xxxxxx Терминал N ФИО

#include "stdafx.h"

#include "windows.h" // win32 API

#include <locale.h> // подключение Русского языка

#include <iostream> // инструкции c++ std,cout,cin …

using namespace std; // пространство стандартных имен */

DWORD WINAPI MyThread(LPVOID lpParam) { //Поток MyThread

cout << "Parameter = " << *(DWORD*)lpParam << endl;

return 0;

}

VOID main() {

DWORD ThreadId, ThreadParameter = 10;

HANDLE hThread;

hThread = CreateThread(//Создание потока MyThread

NULL, // атрибуты безопасности по умолчанию

Размер стека по умолчанию

MyThread, // указатель на процедуру создаваемого потока

&ThreadParameter, // аргумент, передаваемый функции потока

Флаги создания по умолчанию

&ThreadId); // возвращаемый идентификатор потока

if (hThread == NULL) cout << "CreateThread failed." << endl;

getchar();

cout << "ThreadId="<<ThreadId<< endl;

CloseHandle(hThread);

}

/* При выполнении данной практической работы я освоил

*/

Практическое занятие №25

1. Краткие теоретические сведения:

Программа запускает два потока. Первый поток First Thread запускается главной программой main, второй поток SecondThread запускается системной функцией CreateThread. Оба потока выполняют подпрограмму длинного счета Calculations(). У потока SecondThread меняется приоритет с помощью системной функции SetThreadPriority и констант THREAD_PRIORITY_ABOVE_NORMAL (увеличить приоритет на единицу) или THREAD_PRIORITY_LOWEST (понизить приоритет на 2 единицы). В зависимости от приоритета поток SecondThread должен заканчиваться раньше или позже чем First Thread. В программе также использованы системные функции SuspendThread и ResumeThread для останова и запуска процесса SecondThread.

Практическая часть

//Практическое занятие № 25

//Группа xxxxxx Терминал N ФИО

#include "stdafx.h"

#include "windows.h" // win32 API

#include <locale.h> // подключение Русского языка

#include <iostream> // инструкции c++ std,cout,cin …

using namespace std; // пространство стандартных имен */

//Подпрограмма длинного счета

void Calculations() {

int i,N=50000000;

double a,b;

for (i = 0; i<N; i++) {

b=(double)i / (double)N;

a=sin(b); }

}

//Поток SecondThread

DWORD WINAPI SecondThread(LPVOID lpParam) {

cout<<endl<<"Begin of Second Thread"<<endl;

Calculations();//Длинный расчет

cout<<"End of Second Thread"<<endl;

return 0;

}

VOID main() {

DWORD dwThreadId, dwThrdParam=0;

HANDLE hThread;

hThread = CreateThread(//Создание потока SecondThread

NULL,

0,

SecondThrea d,

&dwThrdParam,

0,

&dwThreadId);

if (hThread == NULL)

{

cout<<"CreateThread failed" <<endl;

return;

}

//Повышение или понижение приоритета потока

SetThreadPriority(hThread, THREAD_PRIORITY_ABOVE_NORMAL);

//SetThreadPriority(hThread, THREAD_PRIORITY_LOWEST);

SuspendThread(hThread); //Останов потока

cout<<"Get some symbol"<<endl;

getchar();

ResumeThread(hThread); //Запуск потока

cout<<"Begin of First Thread "<<endl;

Calculations(); //длинный расчет

cout<<"End of First Thread"<<endl;

getchar();

}

/* При выполнении данной практической работы я освоил

*/

 

Лекция 11. Межпроцессный обмен

К основным способам межпроцессного обмена традиционно относят каналы и разделяемую память.

Введение

Из курса ОС известно, что для выполнения таких задач, как совместное использование данных, построение интегрированных многофункциональных приложений и т.д., различным процессам (а также различным потокам) необходимо взаимодействовать между собой. Поскольку процессы изначально задумывались как обособленные сущности, для обеспечения корректного взаимодействия процессов требуются специальные средства и действия операционной системы.

В основе межпроцессного (Inter Process Communications, IPC) обмена обычно находится разделяемый ресурс (например, канал или сегмент разделяемой памяти). Обычно такой ресурс может быть доступен всем процессам, которые знают его имя и имеют необходимые привилегии.

Кроме того, организация связи между процессами всегда предполагает установления таких ее характеристик, как:

· направление связи. Связь бывает однонаправленная (симплексная) и двунаправленная (полудуплексная для поочередной передачи информации и дуплексная с возможностью одновременной передачи данных в разных направлениях);

· тип адресации. В случае прямой адресации информация посылается непосредственно получателю, например, процессу P-Send (P, message). В случае непрямой или косвенной адресации информация помещается в некоторый промежуточный объект, например, в почтовый ящик;

· используемая модель передачи данных - потоковая или модель сообщений (см. ниже);

· объем передаваемой информации;

· синхронность обмена данными. Если отправитель сообщения блокируется до получения этого сообщения адресатом, то обмен считается синхронным, в противном случае - асинхронным.

Кроме перечисленных у каждой связи есть еще ряд особенностей.


Поделиться с друзьями:

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.