Demoni (o Demoni) e genitore | i concetti di threading dei bambini sono ortogonali tra loro. In altre parole, la base della tua domanda è sbagliata. Allo stesso modo, le priorità possono essere assegnate a processi e thread, ma la priorità è ortogonale alla definizione di un demone, un thread principale o uno stato di thread secondario.
Un'applicazione è un programma che è stato scritto e diventa un processo quando viene eseguito. Un'applicazione è costituita da un processo e zero, uno o più thread. La voce di Wikipedia su Thread fa un buon lavoro di spiegazione della differenza tra un processo e un thread.
I processi - sono in genere indipendenti, mentre i thread esistono come sottoinsiemi di un processo
I processi - contengono molte più informazioni di stato rispetto ai thread, mentre più thread all'interno di un processo condividono lo stato del processo oltre a memoria e altre risorse
I processi - hanno spazi di indirizzi separati, mentre i thread condividono lo spazio degli indirizzi
I processi - interagiscono solo attraverso i meccanismi di comunicazione tra processi forniti dal sistema
- il passaggio da un contesto all'altro tra i thread nello stesso processo è in genere più rapido del passaggio di contesto tra i processi.
Un paio di note -
I thread - possono o non possono condividere lo stesso spazio indirizzo, dipende dal sistema operativo.
- prendi il commento sul cambio di contesto con un pizzico di sale - questo sarà dipendente dal SO e dal chipset.
"Processo" e "discussione" sono talvolta usati in modo intercambiabile nelle conversazioni. È normale chiamare il processo "thread principale" anche se questo non è tecnicamente corretto poiché si tratta di un processo. Qualsiasi thread che genera thread aggiuntivi verrebbe considerato anche come thread padre.
Un daemon è un processo o un'applicazione in background, generalmente senza elementi interattivi, ma non è un requisito difficile. A un demone può essere assegnata una priorità, non solo una priorità bassa. Oltre al processo, un demone potrebbe avere alcuni thread figli associati.
Tutti questi termini sono indipendenti dal linguaggio di programmazione utilizzato per scrivere l'applicazione. Alcune lingue offrono un supporto migliore per i thread rispetto alle altre lingue.