2012-07-17 17 views
9

Quindi stavo leggendo "CLR via C#" e ho trovato questa riga "Un thread è un concetto di Windows il cui compito è quello di virtualizzare la CPU". Veramente? Era single \ multi thread originariamente da Windows?

Cercare su google per giustificare non ha aiutato e quindi cercare aiuto dalla comunità.Il thread è un concetto di Windows?

+1

Penso che il significato del libro sia che i thread sono gestiti dal kernel di Windows e non dal runtime .NET. – MattDavey

+2

Penso che questa domanda appartenga ai programmatori, ma poi, chi sono. Non puoi più votare per passare ai programmatori. –

+1

È un errore facile da capire. Tecnicamente, un thread è un concetto a livello di sistema operativo. L'O/S gestisce i thread. Nel contesto di C#, nella maggior parte dei casi, (Mono non resiste), l'O/S sarà Windows, quindi in questo contect, di solito si tratta di un concetto a livello di Windows. Considerato come una spiegazione generale, non tecnica, di quale thread è, ha senso. Non è tecnicamente preciso, ma il tuo novellino medio non saprà o non si preoccuperà della distinzione. – David

risposta

6

Risposta breve: No, non è solo un concetto di Windows, e il concetto è stato intorno per un periodo piuttosto lungo.

10

Suppongo che l'autore intendesse davvero che il threading come meccanismo è qualcosa che viene gestito da Windows e non da .NET framework.

+0

Il che è palesemente sbagliato, i thread .NET non si associano ai thread del sistema operativo, possono condividere un singolo thread e persino passare alle fibre più leggere dietro le quinte. Sono davvero una cosa .NET. – Blindy

+2

Non c'è nulla nella documentazione C# che dice che non posso effettuare chiamate di blocco ogni volta che lo desidero. Sembrano e si comportano molto come i fili del sistema operativo per me. Anche il Task Manager sembra pensarlo: se faccio 2000 thread con C#, la TM mostra il mio processo con thread 2001. Sarebbe estremamente scortese per .NET, (o qualsiasi altro framework o ambiente), tentare di fiber/green il mio codice. Non riesco a vedere come potrebbe farlo, TBH. –

+0

Sono d'accordo, per ora, che i thread CLR siano mappati ai thread del sistema operativo, ma la vite dice che questo potrebbe cambiare in futuro (o potrebbe averlo già fatto in 4.5 o 5.0). –

1

Credo che Amiga avesse già il multithreading. Potrebbe essere che il testo si riferisca al fatto che il multithreading sia (anche) un concetto di Windows ma non che sia (in origine) un'invenzione di Windows?

2

Direi che quando parliamo di "threading" su Windows c'è una certa ipotesi sulla memoria condivisa e l'implementazione. In realtà non ho mai sentito il termine "thread" fino a quando non sono passato alla programmazione Windows (al contrario della programmazione embedded). Avevo più familiarità con il multiprocessing e il multitasking. Quindi il concetto non era unico ma la terminologia potrebbe essere cambiata. Vorrei sottolineare nella mia esperienza precedente a Windows, molti processi NON condividevano la memoria a meno che non fosse globale.

Problemi correlati