C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 85 - Что такое Ожидающие функции / MSDN rus / Visual C++

Шаг 85 - Что такое Ожидающие функции

Win32 API поддерживает целый ряд функций, которые начинаются с Wait. Это ожидающие функции. Смысл их в том, что они блокируют выполнение потока до наступления какого-то события или тайм-аута.

WaitForMultipleObjects
WaitForMultipleObjectsEx
WaitForSingleObject
WaitForSingleObjectEx 
MsgWaitForMultipleObjects
MsgWaitForMultipleObjectsEx

Немного в стороне функция WaitCommEvent() предназначенная для работы с данными в последовательных портах.

Для того, чтобы пользоваться этими функциями должен быть объект синхронизации, который эти функции и проверяют. У этих объектов два состояния: установлен и сброшен. При вызове этих функций им передается указатель на объект синхронизации. Объект проверяется. Если он не установлен, то функция будет ждать пока не истечет тайм-аут. Все это время поток будет блокирован. Эти функции можно представить шаблонно так:

DWORD Wait........
(
	HANDLE hHandle,		// указатель на объект синхронизации
	DWORD dwMilliseconds	// тайм аут
);

Функции где в имени есть Single предназначены для установки одного синхронизирующего объекта, а где есть Multiple можно установить ожидание сразу нескольким объектам. Функции с префиксами Msg предназначены для ожидания события определенного типа, например, ввода с клавиатуры. Функции с окончанием Ex расширены опциями по управлению асинхронным вводом-выводом.

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


| |
Автор Каев Артем.
[AD]