завершить thread

Тема в разделе "WASM.WIN32", создана пользователем Sickle, 22 июн 2005.

  1. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    хотелось бы завершить thread так, чтобы все порожденные им потоки тоже завершились. как это можно реализовать?
     
  2. young_man

    young_man New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2005
    Сообщения:
    117
    Адрес:
    Ukraine
  3. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    что-то не нашел :dntknw:
     
  4. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    Sickle

    Я здесь вижу только один выход: родительский поток должен запоминать хэндлы порожденных им дочерних потоков. Также он должен иметь специальную процедуру завершения, которая будет выполняться при завершении этого потока. В обязанности этой процедуры будет входить завершение всех дочерних потоков перед завершением родительского потока. Теперь, для того чтобы завершить родительский поток нужно чтобы какой-то другой поток приостановил завершаемый поток (с помощью функции SuspendThread) и установил в его контексте значение регистра EIP (с помощью функций GetThreadContext и SetThreadContext) таким образом, чтобы он указывал на процедуру завершения. После этого он должен возобновить работу завершаемого потока (с помощью функции ResumeThread). Вот и все, теперь завершаемый поток сам завершит все порожденные им потоки, а потом и самого себя.
     
  5. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    Oleg_SK

    мда... или, как альтернативу, юзать флаг завершения, который будет проверяться родительским потоком... в общем, ситуация ясна. хотелось бы иметь функцию а-ля ExitProcess но применительно к потоку. видать, не дано :dntknw:
     
  6. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    Sickle

    Я что-то намудрил в своем предидущем посте. Вобщем, я хотел сказать, что если перед завершением родительского потока нужно завершить все его дочерние потоки, то родительскому потоку прийдется самому этим заниматься.
     
  7. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    Sickle

    Я что-то намудрил в своем предыдущем посте. Вобщем, я хотел сказать, что если перед завершением родительского потока нужно завершить все его дочерние потоки, то родительскому потоку прийдется самому об этом позаботиться.