ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »