Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Void *security_attrib, unsigned long flag,unsigned long* tid).




Первым аргументом идет адрес процедуры нити, в стандартном случае эта процедура должна быть функцией без возвращаемого значения (функция типа void) и нетипизированным аргументом (формально типа void*). Процедура нити, созданной функцией _beginthreadNT, должна оканчивать специальной функцией _ endthread().

Вторым аргументом указывается размер стека, округляемый практически до значения, кратного 4096.

Третий аргумент arglist задает указатель на строку аргументов, в простейшем случае отсутствия аргументов он может быть задан значением NULL.

Аргумент security_attrib используется в более сложных программах, реализующих всю мощь встроенной защиты в WindowsNT. В обычных случаях его также можно задавать равным NULL.

Пятый аргумент flag служит для задания режима приостановленной при создании нити, что обозначается символической константой CREATE_SUSPENDED. В противном случае (запуск тут же функционирующей нити) этот параметр-флаг устанавливается равным нулю.

Последний параметр функции предназначен для возвращаемого значения идентификатора нити. В случае неудачи при создании нити возвращается число -1, в остальных случаях – хэндл созданной нити, который как переменная может быть описан с типом HANDLE.

Следующий ниже пример иллюстрирует построение и использование нитей.

 

#include <windows.h>

#include <process.h>

#include <stdio.h>

#include <conio.h>

char lbuk[]=”abcdefghijklmnoprqstuwxy”;

 

void procthread1(void *arg)

{ int k,j;

for (k=0;k<24;k++)

{ gotoxy(20,k+1);

textcolor(LIGHTBLUE);

for (j=0;j<(int)arg;j++)

cprinf(“%c”,lbuk[k]);

}

}

 

void procthread2(void *arg)

{ int k,j;

for (k=0;k<24;k++)

{ gotoxy(40,k+1);

textcolor(LIGHTGREEN);

for (j=0;j<(int)arg;j++)

cprinf(“%c”,lbuk[k]);

}

}

 

void procthread3(void *arg)

{ int k,j;

for (k=0;k<24;k++)

{ gotoxy(60,k+1);

textcolor(RED);

for (j=0;j<(int)arg;j++)

cprinf(“%c”,lbuk[k]);

}

}

 

void main()

{ HANDLE hthread1,hthread2,hthread3;

unsigned long threadid1,threadid2,threadid3;

int k;

hthread1=(HANDLE)_beginthreadNT(procthread1,4096,(void *)2,NULL,0,&threadid1);

hthread2=(HANDLE)_beginthreadNT(procthread2,4096,(void *)3,NULL,0,&threadid2);

hthread3=(HANDLE)_beginthreadNT(procthread3,4096,(void *)4,NULL,0,&threadid3);

for (k=0;k<24;k++)

{ gotoxy(1,k+1);

textcolor(WHITE);

for (j=0;j<(int)arg;j++)

cprinf(“%c”,lbuk[k]);

}

getchar();

CloseHandle(hthread1);

CloseHandle(hthread2);

CloseHandle(hthread3);

}

 

Для уничтожения нитей в операционных системах Windows служит системная функция TerminateThread, которая имеет следующий прототип:

BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode).

Обычно эту функцию используют только тогда, когда управление нитью потеряно и она ни на что не реагирует.

Код возврата из нити, завершившейся самостоятельно или прекращенной приказом TerminateThread, может быть получен в другой нити того же процесса путем вызова вспомогательной функции GetExitCodeThread со следующим прототипом:

BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode).

Если задача, указанная аргументом hThread в момент запроса кода еще работает, то функция возвращает значение STILL_ACTIVE в качестве значения второго аргумента.

Код возврата из нормально завершающейся нити формирует системная функция ExitThread, имеющая прототип

Void ExitThread(DWORD dwExitCode).

 

Задание на лабораторную работу:

1. изучить системные функции мыши для текстового режима MS Windows.

2. составить программу с использованием изученных функций по указанию преподавателя.

 


ВАРИАНТЫ ЗАДАНИЙ

  1. Лабораторная работа №1. Ввод-вывод в стандартные файлы.
№ вар. Задание: разработать программу с использованием базовых системных функций ОС WINDOWS, которая ….
  Вводит символьную строку и число N, отбрасывает от строки последние N символов и выводит оставшуюся часть строки
  1. Лабораторная работа №2. Базовые средства использования файловой системы
№ вар. Задание: разработать программу с использованием базовых системных функций ОС WINDOWS, которая ….
  Переписывает вещественные числа из одного файла в два других, в первый положительные числа, а во второй - отрицательные
  1. Лабораторная работа №3. Функции вывода для консольных устройств
№ вар. Задание: разработать программу с использованием базовых системных функций ОС WINDOWS, которая ….
  Изобразить в центре экрана квадратное окно зеленого цвета со стороной 20
  1. Лабораторная работа №4. Функции ввода для консольных устройств

Задание: программа запрашивает пароль, состоящий из трех символьных комбинированных сообщений (пароль указан в варианте задания), выводя при этом вместо вводимых символов символ ‘*’. Если пароль введен правильно, то выводится приветствие ‘Hello, User’. Выход из программы осуществить только после ввода символьной комбинации выхода (см. вариант задания) с предварительной подсказкой.

 

№ вар. Пароль Выход
…+‘a’ …+‘b’ …+‘c’
  Shift LeftAlt [S] [C] Alt Alt+’Q’

[C] - включен режим CapsLock;

[N] - включен режим NumLock;

[S] - включен режим ScrollLock.

 





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


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 355 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2193 - | 2115 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.