Воссоздавать мертвые потоки после разветвления

Как вы, возможно, знаете, все потоки в приложении умирают в разветвленном процессе, кроме потока, выполняющего вилку. Однако я планирую восстановить эти потоки в разветвленном процессе, вызвав pthread_create и используя pthread_attr_setstack , чтобы назначить вновь созданным потокам тот же стек, что и мертвые потоки. Примерно так.

// stackAddr and stacksize taken from the dead thread    
pthread_attr_setstack(&attr, stackAddr, stacksize);
rc = pthread_create(&thread, &attr, threadRoutine, NULL); 

Однако мне все равно нужно получить значения регистров ЦП, такие как указатель стека, базовый указатель, указатель инструкций и т. Д., Чтобы перезапустить потоки с той же точки. Как я могу это сделать? А что еще мне нужно сделать, чтобы успешно достичь своей цели?

Также обратите внимание, что я использую 64-битную архитектуру. Какие дополнительные трудности были бы у него по сравнению с 32-битным?

7
задан MetallicPriest 27 October 2011 в 15:47
поделиться