Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизОбъекты сигнального типа... Найти похожие ветки
← →
Cyrax © (2006-11-21 12:35) [0]Первым параметром функции WaitForSingleObject передаётся дескриптор ресурса типа HANDLE:
DWORD WaitForSingleObject(
HANDLE hObject,
DWORD dwTimeot
);
По смыслу объект должен быть сигнального типа (событие, мьютекс, критическая секция и др.). Но что произойдёт, если передать функции дескриптор, скажем, файла (или это тоже объект сигнального типа - открыт/закрыт ?) или потока (это уже точно не объект сигнального типа) ? Дескрипторы то у них у всех одного системного типа - HANDLE...
← →
Сергей М. © (2006-11-21 12:39) [1]
> что произойдёт, если передать функции дескриптор, скажем,
> файла
Ф-ция вернет отказ - это не объект сигн.типа.
> или потока (это уже точно не объект сигнального типа) ?
Хэндл потока допустим как параметр ф-ции - поток "сигналит" о своем завершении.
← →
Alex Konshin © (2006-11-21 13:04) [2]> Cyrax © (21.11.06 12:35)
Может, это прозвучит банально, но прочтите же наконец help!
Там все разжевано.
← →
Cyrax © (2006-11-21 13:07) [3]Удалено модератором
Примечание: Создание пустых сообщений
← →
Cyrax © (2006-11-21 22:27) [4]Сергей М. © (21.11.06 12:39) [1]
Хэндл потока допустим как параметр ф-ции - поток "сигналит" о своем завершении.
Аналогично рассуждая, файл "сигналит" о своём освобождении (файл ни кем не используется)...
← →
Virgo_Style © (2006-11-21 22:54) [5]Cyrax © (21.11.06 22:27) [4]
Аналогично рассуждая, файл "сигналит" о своём освобождении
файлы не рассуждают, даже аналогично
← →
Cyrax © (2006-11-21 23:00) [6]Virgo_Style © (21.11.06 22:54) [5]
Т.е. как API функция определяет по дескриптору "сигнальность" объекта ?
Alex Konshin © (21.11.06 13:04) [2]
Может, это прозвучит банально, но прочтите же наконец help!
Там все разжевано.
Help в Delphi ? По API-функциям ??
← →
MikePetrichenko © (2006-11-22 00:23) [7]Функции WaitForxxx принимают в качестве параметра описатели (Handle) объектов ядра.
За подробностями к Рихтеру.
← →
Cyrax © (2006-11-22 13:13) [8]MikePetrichenko © (22.11.06 00:23) [7]
Функции WaitForxxx принимают в качестве параметра описатели (Handle) объектов ядра.
Т.е. и потоки, и файлы, и консоль ввода... (всё это объекты ядра...)
← →
RWolf © (2006-11-22 13:25) [9]
> Help в Delphi ? По API-функциям ??
Весьма толковый, кстати.
← →
MikePetrichenko © (2006-11-22 14:54) [10]
> Т.е. и потоки, и файлы, и консоль ввода... (всё это объекты
> ядра...)
Да.
> Т.е. как API функция определяет по дескриптору "сигнальность"
> объекта ?
Ну когда вы в конце концов будете читать то, что вам советуют.
У Рихтера все это расписано от и до.
Также почитай "Секреты Windows". Не помню кто написал. Там про ядро и про все остальное. Очень интересно.
← →
Alexander Panov © (2006-11-22 17:37) [11]Объекты, которые могут сигнализировать:
- Change notification
- Console input
- Event
- Job
- Memory resource notification
- Mutex
- Process
- Semaphore
- Thread
- Waitable timer
← →
Alexander Panov © (2006-11-22 17:38) [12]Точнее будет сказать не "синализирующие объекты", а "объекты синхронизации".
← →
MikePetrichenko © (2006-11-22 18:08) [13]
> Alexander Panov ©
А также:
File
Pipe
Mail slot
Socket
Driver Object
и многое другое....
Еще раз повторю. Все объекты ядра. Хватит заниматься гаданиями на кофейной гуще. Прочтите наконец литературу.
← →
Сергей М. © (2006-11-23 08:58) [14]
> MikePetrichenko © (22.11.06 18:08) [13]
> А также:
> Socket
?
← →
MikePetrichenko © (2006-11-23 09:02) [15]
> ?
Что не понятно?
Socket - объект ядра, который может быть передан в функции WatForXXX.
Читать WinSock API до просветления.
← →
MikePetrichenko © (2006-11-23 09:08) [16]
> "объекты синхронизации".
Event, Mutex, Critical Section, Semaphore. Все. Больше объектов синхронизации нет. RTFM.
Все остальное - объекты ядра либо GDI.
← →
Сергей М. © (2006-11-23 09:44) [17]
> MikePetrichenko © (23.11.06 09:02) [15]
И при каких же событиях этот объект должен сигналить ?
← →
Alexander Panov © (2006-11-23 14:58) [18]
> > "объекты синхронизации".Event, Mutex, Critical Section,
> Semaphore. Все. Больше объектов синхронизации нет. RTFM.
>
Я рекомендую обратиться к первоисточнику - MSDN(тема - Synchronization Objects).
Как это ни прискорбно, некторые из головы любят выдумать и сказать, не проверив себя.
И сбавь тон. Здесь не лекторий.
← →
MikePetrichenko © (2006-11-24 03:33) [19]
> И при каких же событиях этот объект должен сигналить ?
Ну, например при коннекте, поступлении данных.
Только не нужно сейчас рассказывать, что там пользуется событие отдельно и т.п. При работе с вайлами в Overlapped в WaitForXXX тоже не сам Handle файла передается. Однакож файлы относятся к объектам ядра.
> MSDN(тема - Synchronization Objects).
Открыл. И что:
The six multithreaded classes provided with MFC fall into two categories: synchronization objects (CSyncObject,CSemaphore,CMutex,CCriticalSection, andCEvent) and synchronization access objects (CMultiLock andCSingleLock).
Synchronization classes are used when access to a resource must be controlled to ensure integrity of the resource. Synchronization access classes are used to gain access to these controlled resources. This article describes when to use each class.
To determine which synchronization class you should use, ask the following series of questions:
Does the application have to wait for something to happen before it can access the resource (for example, data must be received from a communications port before it can be written to a file)?
If yes, use CEvent.
Can more than one thread within the same application access this resource at one time (for example, your application allows up to five windows with views on the same document)?
If yes, use CSemaphore.
Can more than one application use this resource (for example, the resource is in a DLL)?
If yes, use CMutex.
If no, use CCriticalSection.
CSyncObject is never used directly. It is the base class for the other four synchronization classes.
← →
Сергей М. © (2006-11-24 08:33) [20]
> MikePetrichenko © (24.11.06 03:33) [19]
> Ну, например при коннекте, поступлении данных.
> Только не нужно сейчас рассказывать, что там пользуется
> событие отдельно и т.п
Ну и к чему ты тогда вся эта бодяга - "объект ядра", "не объект ядра" ?)
И ежу понятно, что все перечисленное выше относится к ядреным объектам, подавляющее большинство из них способно "сигналить", прямо или косвенно.
Но вопрос-то был проще пареной репы - будет ли "сигналить" некий конкретный объект, если его употребить в ф-ции ожидания непосредственно !
И ответ столь же простой - файл не будет, сокет не будет ... А будут только те, что перечислены в [11].
Я, кстати, тоже был не прав, утверждая насчет отказа ф-ции ожидания - ф-ция с успехом "проглотит" любой из ядреных хэндлов, но работать ожидаемым образом будет лишь в перечисленных в msdn случаях.
← →
MikePetrichenko © (2006-11-24 14:18) [21]
> файл не будет, сокет не будет
А ты попробуй.
← →
Сергей М. © (2006-11-24 14:36) [22]
> MikePetrichenko © (24.11.06 14:18) [21]
Что там пробовать-то ?)
Все уже давно "опробовано")
Рекомендую тебе дальше не продолжать, ибо облажаешься по полной программе)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.038 c