Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гульбахар_sisprog.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
27 Кб
Скачать
☆

30.События Windows

Событием называется оповещение о некотором выполненном действии. В программировании события используются для оповещения одного потока о том, что другой поток выполнил некоторое действие. Сама же задача опо­вещения одного потока о некотором действии, которое совершил другой поток, называется задачей условной синхронизации или иногда задачей опове­щения. В операционных системах Windows события описываются объектами ядра Events. При этом различают два типа событий:

  • события с ручным сбросом;

  • события с автоматическим сбросом.

Различие между этими типами событий заключается в том, что событие с ручным сбросом можно перевести в несигнальное состояние только по­средством вызова функции ResetEvent, а событие с автоматическим сбро­сом переходит в несигнальное состояние как при помощи функции ResetEvent, так и при помощи функции ожидания. При этом отметим, что если события с автоматическим сбросом ждут несколько потоков, используя функцию WaitForSingleObject, то из состояния ожидания освобождается только один из этих потоков.

Создаются события вызовом функции CreateEvent, которая имеет следую­щий прототип:

HANDLE CreateEvent(

LPSECURITY_ATTRIBUTES IpSecurityAttributes, // атрибуты защиты

BOOL bManualReset, // тип события

BOOL blnitialState, // начальное состояние события

LPCTSTR lpName // имя события

) ;

36.Способы передачи данных между процессами

Под обменом данными между парамелъными процессами понимается пересылка данных от одного потока к другому потоку, предполагая, что эти потоки выполняются в контекстах разных процессов. Поток, который посылает данные другому потоку, называется отправителем. Поток, который получает данные от другого потока, называется адресатом или получателем. При обмене данными между параллельными процессами различают два способа передачи данных:

□ потоком;

□ сообщением.

Если данные передаются непрерывной последовательностью байтов, то такая пересылка данных называется передача данных потоком. В этом случае общая память М, доступная потокам ядра операционной системы, может и отсутствовать, а пересылка данных выполняется одним потоком ядра непосредственно из буфера В\ в буфер В2.

Если данные пересылаются группами байтов, то такая группа байтов называется сообщением, а сама пересылка данных называется передачей данных сообщениями.

42.Обработка вложенных исключений

По умолчанию система отключает все исключения с плавающей точкой. Поэтому если при выполнении операции с плавающей точкой было получено число, которое не входит в диапазон представления чисел с плавающей точкой, то в результате система вернет nan или infinity в случае слишком малого или слишком большого числа соответственно. Чтобы включить режим генерации исключений с плавающей точкой нужно изменить состояние слова, управляющего обработкой операций с плавающей точкой. Это можно сделать при помощи функции _controifp, которая имеет следующий прототип:

unsigned int _controlfp( unsigned int new, unsigned int mask) ;

Для разрешения генерации исключений с плавающей точкой параметр mask должен принимать значение _mcw_em. ЕСЛИ значение этого параметра равно 0, то функция control fр просто возвращает старое управляющее слово.

В параметре new для управления исключениями можно сбрасывать или устанавливать следующие значения:

□ _ЕМ_INVALID — исключение exception_flt_invalid_operation;

□ _em_denormal — исключение exception_flt_denormal_operand;

□ _EM_ZERODIVIDE — ИСКЛЮЧеНИе EXCEPTION_FLT_DIVIDE_BY_ZERO; и тд

Если бит, соответствующий одному из этих значений, сброшен, то система генерирует соответствующее исключение с плавающей точкой, в противном случае исключение не генерируется.