Recentemente ho lavorato di più con la concorrenza in Ruby e continuo a vedere vari articoli che utilizzano "thread" e "processi" in modo intercambiabile.
Quali sono le definizioni effettive di questi termini? È un processo composto da più thread?
Diciamo che uso Unicorn / Puma / etc .. come server web.
Sto capendo correttamente quanto segue?
-
Ogni Unicorn (o qualsiasi altra cosa) worker è il suo processo. Ha una lista individuale nella lista dei processi di Linux (
ps aux
). -
Ogni lavoratore ha più thread . Questi thread condividono la memoria e altri contesti perché è tutto in un unico processo, ma simulano il processo facendo più cose contemporaneamente.
-
Ogni thread ha (al massimo) una connessione a un Database che utilizza per interrogare o scrivere dati. Controlla questa connessione da un pool di connessioni, che è una raccolta di connessioni disponibili per l'uso
-
Ogni pool di connessioni si applica a un processo . Quindi, se il mio processore di background in background (ad esempio Resque, Delayed Job, ecc.) Ha una concomitanza di "25" significa che ogni processo di lavoro ottiene fino a 25 connessioni da distribuire tra i suoi thread.