ВУЗ:
Составители:
54
созданием нового потока, VMM не посылает сообщения Create_Thread (но
посылает при этом сообщение Create_VM.)
Так же, как и виртуальные машины, потоки создаются и
разрушаются поэтапно. Первое сообщение – Create_Thread, посылается в
начале процесса создания потока. EDI содержит обработчик (THCB)
создаваемого потока (который не является выполняемым в настоящее
время потоком). VxD может возвращать установленный флаг переноса, и
VMM не будет создавать поток. Обычно здесь VxD размещает и
инициализирует потоко-ориентированные данные. Этап внешнего
отведения памяти необходим, если 4-х байтов данных на поток в THCB
(отведенных в процессе инициализации VxD) недостаточно. В этом случае,
структура данных потока размещается на этапе Create_Thread, и данные
потока в THCB используются для того, чтобы хранить указатель
на эту
вновь отведенную структуру.
Как только поток полностью создан, VMM посылает сообщение
Thread_Init. EDI опять содержит обработчик вновь созданного потока, но
теперь новый поток также является потоком, выполняемым в настоящее
время. VxD должен задержать любую инициализацию, которая требует
выполнения нового потока, пока он не получит этого сообщения.
Разрушение потока также влечет за собой
многократные сообщения:
Terminate_Thread, Thread_Not_Executeable, и Destroy_Thread. Когда
первое сообщение, Terminate_Thread, послано, поток "собирается быть
завершенным", но все еще способен выполняться. Обычно VxD отвечает
на это сообщение, освобождая любые ресурсы, связанные с потоком.
Следующее сообщение, Thread_Not_Executeable, посылается, когда поток
больше не может выполняться. Последнее сообщение Destroy_Thread
выдается после того, как поток фактически
был разрушен и дает VxD
последний шанс для освобождения потоко-ориентированных ресурсов.
54
созданием нового потока, VMM не посылает сообщения Create_Thread (но
посылает при этом сообщение Create_VM.)
Так же, как и виртуальные машины, потоки создаются и
разрушаются поэтапно. Первое сообщение – Create_Thread, посылается в
начале процесса создания потока. EDI содержит обработчик (THCB)
создаваемого потока (который не является выполняемым в настоящее
время потоком). VxD может возвращать установленный флаг переноса, и
VMM не будет создавать поток. Обычно здесь VxD размещает и
инициализирует потоко-ориентированные данные. Этап внешнего
отведения памяти необходим, если 4-х байтов данных на поток в THCB
(отведенных в процессе инициализации VxD) недостаточно. В этом случае,
структура данных потока размещается на этапе Create_Thread, и данные
потока в THCB используются для того, чтобы хранить указатель на эту
вновь отведенную структуру.
Как только поток полностью создан, VMM посылает сообщение
Thread_Init. EDI опять содержит обработчик вновь созданного потока, но
теперь новый поток также является потоком, выполняемым в настоящее
время. VxD должен задержать любую инициализацию, которая требует
выполнения нового потока, пока он не получит этого сообщения.
Разрушение потока также влечет за собой многократные сообщения:
Terminate_Thread, Thread_Not_Executeable, и Destroy_Thread. Когда
первое сообщение, Terminate_Thread, послано, поток "собирается быть
завершенным", но все еще способен выполняться. Обычно VxD отвечает
на это сообщение, освобождая любые ресурсы, связанные с потоком.
Следующее сообщение, Thread_Not_Executeable, посылается, когда поток
больше не может выполняться. Последнее сообщение Destroy_Thread
выдается после того, как поток фактически был разрушен и дает VxD
последний шанс для освобождения потоко-ориентированных ресурсов.
Страницы
- « первая
- ‹ предыдущая
- …
- 52
- 53
- 54
- 55
- 56
- …
- следующая ›
- последняя »
