CLRium # 6: Parallelität und Parallelität. Zwei Tage: vom Prozessor zum Async / Warten




Wie Sie bereits bemerkt haben, hat sich das Format des Seminars weiterentwickelt und eine neue Form angenommen: Jedes nachfolgende Seminar ist nun ausschließlich einem Thema gewidmet. Der fünfte widmete sich dem Thema Garbage Collector und enthüllte in 10 Stunden alles Mögliche, wobei absolut private Fragen hinter den Klammern blieben. Und sein Höhepunkt war ein Bericht über die praktische Anwendung (eine Frage, die alle interessiert - „warum das alles wissen?“)


Die zweite Frage, die meiner Meinung nach jeder wissen möchte, aber in der Regel keine Zeit dafür hat, ist die Frage der Arbeit mit Multithread-Code und die Frage der Planung und Unterstützung seiner Architektur. Diese Fragen sind recht komplex, beängstigend und im Allgemeinen oft abstoßend. Und genau deshalb geht der normale Entwickler nicht über die einfachsten Synchronisationskonstrukte hinaus. Aber es gibt so viele interessante Dinge :)


Vor nicht allzu langer Zeit habe ich eine scheinbar einfache Wahrheit verstanden: Um zu verstehen, wie Abstraktionen auf oberster Ebene funktionieren, müssen Sie verstehen, wie Abstraktionen auf niedrigerer Ebene funktionieren. Mit anderen Worten, um zu verstehen, wie mit Multithread-Code auf asynchroner / wartender Ebene gearbeitet wird, müssen Sie mindestens die Synchronisationsprimitive und andere Grundlagen von Multithread-Code in .NET kennen. Und was ist noch besser - ziemlich viel von der Ebene des Betriebssystems. Danach werden die meisten Abstraktionen der obersten Ebene automatisch gelöscht.


Auf dem neuen Seminar, das diesmal nicht nur die .NET-Plattform wie zuvor betrifft, sondern im Wesentlichen jede Plattform abdeckt (schließlich funktioniert Multithread-Code auf der Grundlage von Abstraktionen auf niedrigerer Ebene), werden wir dieses Thema im Detail behandeln:


Werkstattplan


Die Grundlagen


Zunächst betrachten wir die Basis: alles, was auf das Betriebssystem und den Prozessor zurückgeht. Schließlich arbeiten alle Mechaniker der obersten Ebene nach den Regeln der unteren. Dies umfasst die Grundlagen der Prozessorarchitektur, der Synchronisationsprimitive sowie der Windows- und Linux-Betriebssystem-APIs. Wussten Sie, dass es allein verschiedene Arten von Prozessen gibt?


BCL, Scheduler, Thread Locals, STA / MTA ...


Nachdem wir diese Abstraktionen und die Regeln für die Arbeit mit ihnen untersucht haben, konzentrieren wir uns auf die grundlegenden Abstraktionen der Plattform selbst: BCL, Thread Locals, Thread Pools und andere Grundlagen. Diese Abstraktionen sind überall, aber Beispiele gelten für die .NET-Plattform. Wir werden die Beziehung zum Betriebssystem, ihre Leistung sowie die Anwendbarkeit in verschiedenen Situationen sehen. Schließlich werden wir viele Probleme verstehen, die noch nicht erreicht wurden: Synchronisationskontexte, STA / MTA, Funktionsweise von Thread Locals und vieles mehr.


Plattformmechanik


Mit jeder neuen Abstraktion und angesichts der Tatsache, dass alles nebeneinander erzählt wird: An einem Tag werden Sie beginnen, alles Wissen miteinander in Beziehung zu setzen, und wir werden reibungslos zu verschiedenen Mechanismen einer höheren Ebene wechseln: Scheduler, Hintergrund, Multithread-Code-Entwicklungsmodelle.


Sperrfreie Algorithmen


den ganzen Weg zu async / warten. Am Ende werden wir uns fortgeschrittenere Multithreading-Algorithmen ansehen. Wir werden ein Paar sperrfreier Algorithmen analysieren, damit jeder von Ihnen sie selbst erstellen kann. Und danach werden wir lernen, Anforderungen an die Entwicklung unserer eigenen zu stellen.


PLINQ / async-warten


Nachdem wir das Wissen über die Grundlagen aufgenommen haben, werden wir beginnen, Bibliotheken mit einem hohen Grad an Abstraktionen zu studieren: von PLINQ bis async / await, wobei die Merkmale der Arbeit mit jedem analysiert werden. Hier meine ich, dass Sie ungefähr mit den Bibliotheken selbst vertraut sind und wir uns mit jeder einzelnen auf einer etwas härteren Ebene befassen werden.


Natürlich können wir das Thema Parallelität nicht an einem Tag aufdecken: Dieses Thema ist zu umfangreich und vielfältig. Aus diesem Grund wird CLRium # 6 zwei Tage lang laufen.


Kontaktdaten


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


All Articles