Wat is het verschil tussen een proces en een thread?
Wat is het technische verschil tussen een proces en een thread?
Ik heb het gevoel dat een woord als 'process' te veel gebruikt wordt en er zijn ook hardware en software threads. Hoe zit het met lichtgewicht processen in talen als Erlang? Is er een definitieve reden om de ene term boven de andere te gebruiken?
1500
3
Zowel processen als threads zijn onafhankelijke sequenties van uitvoering. Het typische verschil is dat threads (van hetzelfde proces) in een gedeelde geheugenruimte draaien, terwijl processen in afzonderlijke geheugenruimten draaien.
Ik weet niet zeker naar welke "hardware" vs "software" threads je misschien verwijst. Threads zijn een kenmerk van de besturingsomgeving, eerder dan een kenmerk van de CPU (hoewel de CPU typisch operaties heeft die threads efficiënt maken).
Erlang gebruikt de term "process" omdat het geen gedeeld-memory multiprogrammeer model heeft. Ze "threads" noemen zou impliceren dat ze gedeeld geheugen hebben.
Gejat van hier.
Zowel threads als processen zijn atomaire eenheden van OS-bronnentoewijzing (d.w.z. er is een concurrency-model dat beschrijft hoe CPU-tijd tussen hen wordt verdeeld, en het model van het bezit van andere OS-bronnen). Er is een verschil in:
Greg Hewgill hierboven had gelijk over de Erlang betekenis van het woord "process" en hier er'is een discussie over waarom Erlang processen lichtgewicht zou kunnen doen.