Ho letto alcune fonti sui metodi corretti di bubbling di un messaggio da un thread a tutti gli altri thread per uscire con garbo (ogni thread esegue la propria routine di uscita). Di questi, mi è piaciuta l'idea di un booleano atomico globale che può essere contrassegnato da qualsiasi thread e tutti gli altri thread controllano questo flag per eseguire una routine di uscita: quando tutti i thread vengono uniti, il thread principale può uscire dall'applicazione.Uscita efficiente dall'applicazione multithread (specifiche)
I thread di calcolo puramente potrebbero essere gestiti in modo diverso, giusto?
È efficiente e sicuro? C'è un modo migliore per farlo?
Grazie!
sembra intelligente, ma non riesco a scuotere la sensazione "questo è troppo hacky" ogni volta che lo leggo ... – Necrolis
Devo ammettere che è non-portatile, ma la maggior parte delle altre soluzioni davvero restringono ciò che terze parti codice che puoi usare nei tuoi thread. Uso intensamente i thread per il networking e ho bisogno di librerie di rete di terze parti (ad esempio, Indy) che possano essere tranquillamente "arrestate". – Roddy
Ancora non riesco a coglierlo, anche dalla spiegazione più dettagliata. Si utilizza QueueUserAPC quando si desidera uscire da un thread e questo alla fine richiama una funzione che genera un'eccezione e questa eccezione raggiunge ogni thread? Come vengono chiamati i distruttori e come appare la funzione di lancio delle eccezioni? (Tutta questa area di programmazione è nuova per me) Grazie! – oneminute