Die simpelste Variante (simpel aber weder elegant, noch besonders effizient, dafuer aber einfach zu realisieren wenn die Anzahl Threads überschaubar bleibt) ist es, für jeden Workerthread einen Monitorthread zu erzeugen. Der wartet dann mittels WaitForSingleObject auf die Beendigung des Workerthreads, WaitForSingleObject bekommt auch einen Timeout-Parameter mit übergeben. Den Rückgabewert dann noch entsprechend auswerten und den Workerthread ggf. abwürgen und neu starten. Nebenbei bemerkt sollte ein abgestorbener Thread aber eher die Ausnahme als die Regel sein
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet.
" (Henning Richter)