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