Comportamento del thread sleep in una macchina con processore single core?

1

Sto cercando di capire come funziona la filettatura quando si utilizza un processore single core, non un hyper-thread.

Ho due applicazioni console identiche in esecuzione su una macchina che ha una CPU centrale e 1 GB di memoria.

In questa applicazione console, ho un metodo che avvia new Thread() . So che quando Start() un nuovo thread e Join() lo stesso thread, blocca il thread principale che lo chiama.

La mia domanda è, se ho due applicazioni console che lo fanno, si bloccherà l'altro?

Se è così, e nel caso in cui ho un Thread.Sleep(10000) su questa app della console, in questo momento, se questa sospensione è in esecuzione su una console, l'altro si bloccherà?

    
posta gog 15.07.2015 - 15:50
fonte

1 risposta

1

L'avvio di un nuovo thread, da solo, non causa il blocco o il blocco del thread corrente. Il sistema operativo pianifica questi thread (insieme a molti altri thread) per eseguire l'esecuzione del turno.

Se la prima applicazione avvia la seconda applicazione come processo, tramite System.Diagnostics.Process , anche questo non causa la sospensione o il blocco del processo o del thread corrente. I thread che girano in queste due applicazioni (processi) eseguiranno anche l'esecuzione del turno.

In altre parole, se qualcosa dorme mai o si blocca, è dovuto al tuo codice, o è dovuto al "blocco dell'I / O" in cui alcune operazioni di input / output sono state eseguite in un modo che non riprende l'esecuzione fino a quando l'operazione è completata. Il blocco degli I / O bloccherà solo il thread su cui viene eseguito.

Se a un'applicazione viene assegnato il privilegio di amministratore del sistema operativo, è possibile emettere alcuni comandi speciali del sistema operativo per bloccare forzatamente un altro processo o thread. Questo è un argomento avanzato e in genere non si riscontra nello sviluppo tipico del software.

Per ottenere una visione di processi e thread, puoi provare l'utilità "Explorer Process SysInternals" . Tuttavia, devo avvertirti che se usi impropriamente questa utility (ad esempio, interrompendo in modo casuale applicazioni o thread) può causare operazioni software anormali, corruzioni di dati o persino far funzionare il tuo computer, richiedendo una riparazione.

    
risposta data 15.07.2015 - 16:16
fonte

Leggi altre domande sui tag