La risposta breve non è ancora possibile. Ma questo non è il punto che dovrebbe essere veramente affrontato.
Punti bonus se si sa come uccidere un thread figlio.
MAI
Anche in lingue che supportano le discussioni abbattimento (see Java here), si raccomanda di non farlo.
d'esecuzione di un filo è generalmente codificato con espliciti punti di interazione, e ci sono spesso assunti impliciti che si verificherà nessun altra interruzione.
L'esempio più eclatante sono ovviamente le risorse: l'ingenuo metodo "kill" sarebbe interrompere l'esecuzione del thread; questo significherebbe non rilasciare alcuna risorsa. Potresti pensare alla memoria, è l'ultima delle tue preoccupazioni. Immaginate, invece, tutti gli Mutex
che non sono sbloccati e creeranno deadlock più tardi ...
L'altra opzione sarebbe quella di iniettare un panic
nella discussione, che causerebbe lo srotolamento. Tuttavia, non è possibile solo avviare lo svolgimento in qualsiasi momento!Il programma dovrebbe definire i punti di sicurezza in base ai quali iniettare uno panic
sarebbe sicuro che sia sicuro (iniettarlo in qualsiasi altro punto significa potenzialmente danneggiare oggetti condivisi); come definire tali punti di sicurezza e iniettare il c'è un problema di ricerca aperto nelle lingue native, specialmente quelle eseguite sui sistemi W^X
(dove le pagine di memoria sono sia scrivibili che eseguibili ma mai entrambe).
In sintesi, non esiste un modo noto per eliminare in modo sicuro (sia dal punto di vista della memoria che della funzionalità) un thread.
fonte
2016-03-09 09:21:09