2012-07-17 18 views
9

Estaba leyendo "CLR mediante C#" y encontré esta línea "Un hilo es un concepto de Windows cuyo trabajo es virtualizar la CPU". De Verdad? ¿Fue single \ multi thread originalmente de Windows?

Google buscando la justificación no ayudó y, por lo tanto, buscó ayuda de la comunidad.¿Es el hilo un concepto de Windows?

+1

Creo que lo que significa el libro es que los hilos son administrados por el kernel de Windows y no por el tiempo de ejecución de .NET. – MattDavey

+2

Creo que esta pregunta pertenece a los programadores, pero entonces, ¿quién soy yo? Ya no puedes votar para cambiar de programador. –

+1

Es un error fácil de entender. Técnicamente, un hilo es un concepto de nivel de sistema operativo. El O/S maneja los hilos. En el contexto de C#, en la mayoría de los casos, (Mono no está de acuerdo), el O/S será Windows, por lo que en este contexto, por lo general es un concepto de nivel de Windows. Tomado como una explicación general, no técnica de lo que es un hilo, tiene sentido. No es técnicamente preciso, pero su novato promedio no va a saber o preocuparse por la distinción. – David

Respuesta

6

Respuesta corta: No, no es únicamente un concepto de Windows, y el concepto ha existido por bastante tiempo.

10

Supongo que lo que el autor realmente quiso decir es que el enhebrar como un mecanismo es algo que está siendo administrado por Windows y no por .NET Framework.

+0

Lo que está descaradamente mal por cierto, los subprocesos de .NET no se asignan a los subprocesos del sistema operativo, pueden compartir un único subproceso e incluso cambiar a las fibras más ligeras entre bastidores. Realmente son algo de .NET. – Blindy

+2

No hay nada en la documentación de C# que diga que no puedo hacer llamadas de bloqueo siempre que lo desee. Se ven y se comportan como hilos del sistema operativo para mí. El administrador de tareas parece pensar lo mismo: si hago 2000 hilos con C#, la MT muestra que mi proceso tiene hilos de 2001. Sería muy desagradable para .NET, (o cualquier otro marco o entorno), tratar de fibra/verde mi código. No puedo ver cómo podría hacerlo, TBH. –

+0

Acepto, por ahora, que los hilos CLR se asignan a los hilos del SO, pero según vinevine esto puede cambiar en el futuro (o puede que ya lo haya hecho en 4.5 o 5.0). –

1

Creo que Amiga ya tenía multiprocesamiento. ¿Podría ser que el texto se refiera a que el multihilo es (también) un concepto de Windows pero no que sea (originalmente) una invención de Windows?

2

Diría que cuando hablamos de "enhebrar" en Windows existe una cierta suposición sobre la memoria compartida y la implementación. De hecho, nunca escuché el término "hilo" hasta que pasé a la programación de Windows (a diferencia de la programación integrada). Estaba más familiarizado con el multiprocesamiento y la multitarea. Entonces, el concepto no fue único, pero la terminología pudo haber cambiado. Debo señalar en mi experiencia anterior a Windows, que los procesos múltiples NO compartían memoria a menos que fuera global.

Cuestiones relacionadas