CLRium # 6: concurrencia y paralelismo. Dos días: del procesador a asíncrono / espera




Como ya notó, el formato del seminario ha evolucionado y ha tomado una nueva forma: cada seminario posterior ahora está dedicado por completo a un tema. El quinto se dedicó al tema del recolector de basura y en 10 horas reveló todo lo que es posible, dejando preguntas absolutamente privadas entre corchetes. Y su culminación fue un informe sobre la aplicación práctica (una pregunta que interesa a todos: "¿por qué saber todo esto?")


La segunda pregunta, que creo que todos quieren saber, pero por regla general, no hay tiempo para esto, es la cuestión de trabajar en código multiproceso y la cuestión de planificar y apoyar su arquitectura. Estas preguntas son bastante complejas, aterradoras y, a menudo, repulsivas en general. Y eso es exactamente por qué el desarrollador ordinario no va más allá de los diseños de sincronización más simples. Pero hay tantas cosas interesantes alrededor :)


No hace mucho tiempo, entendí una verdad aparentemente simple: para entender cómo funcionan las abstracciones de nivel superior, debes comprender cómo funcionan las abstracciones de nivel inferior. En otras palabras, para comprender cómo trabajar con código multiproceso en el nivel asíncrono / espera, necesita conocer las primitivas de sincronización y otros principios básicos del código multiproceso en .NET al menos. Y lo que es aún mejor: bastante del nivel del sistema operativo. Después de eso, la mayoría de las abstracciones de nivel superior se aclararán automáticamente.


En el nuevo seminario, que esta vez se refiere no solo a la plataforma .NET, como lo era antes, sino que esencialmente cubre cualquier plataforma (después de todo, el código multiproceso funciona sobre la base de abstracciones de nivel inferior), revelaremos este tema con más detalle:


Plan de taller


Los fundamentos


Para comenzar, consideraremos la base: todo lo que se remonta al sistema operativo y al procesador. Después de todo, cualquier mecánica de nivel superior funciona según las reglas de la inferior. Esto incluirá los conceptos básicos de la arquitectura del procesador, las primitivas de sincronización y las API del sistema operativo Windows y Linux. ¿Sabía que solo hay varios tipos de procesos?


BCL, programadores, locales de subprocesos, STA / MTA ...


Después de examinar estas abstracciones y examinar las reglas para trabajar con ellas, nos centraremos en las abstracciones básicas de la plataforma en sí: BCL, Thread Locals, grupos de hilos y otros conceptos básicos. Estas abstracciones están en todas partes, pero los ejemplos serán para la plataforma .NET. Veremos la relación con el sistema operativo, su rendimiento y la aplicabilidad en diversas situaciones. Finalmente, entenderemos muchos problemas que no se han alcanzado: contextos de sincronización, STA / MTA, cómo funciona Thread Locals y mucho más.


Mecánica de plataformas


Con cada nueva abstracción, más teniendo en cuenta el hecho de que todo se contará uno al lado del otro: en un día, comenzarán a relacionar todos los conocimientos entre sí y cambiaremos sin problemas a varios mecanismos de un nivel superior: planificadores, antecedentes, modelos de desarrollo de código multiproceso.


Algoritmos sin bloqueo


todo el camino a async / esperar. Y al final, veremos algoritmos de subprocesos múltiples más avanzados. Analizaremos un par de algoritmos sin bloqueo para que cada uno pueda crearlos usted mismo. Y después de eso aprenderemos a hacer requisitos para el desarrollo de los nuestros.


PLINQ / async-await


Además, habiendo absorbido el conocimiento de los conceptos básicos, comenzaremos a estudiar bibliotecas de altos niveles de abstracciones: desde PLINQ hasta async / wait, analizando las características de trabajar con cada uno. Aquí quiero decir que estás aproximadamente familiarizado con las bibliotecas en sí mismas y profundizaremos en cada una de ellas en un nivel un poco más duro.


Por supuesto, no podremos descubrir el tema de la concurrencia en un día: este tema es demasiado extenso y multifacético. Es por esta razón que CLRium # 6 continuará durante dos días.


Datos de contacto


Source: https://habr.com/ru/post/460635/


All Articles