Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Buch zu den .NET-Internas?
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1432
Herkunft: Düsseldorf

Themenstarter:

Buch zu den .NET-Internas?

beantworten | zitieren | melden

Guten Abend/Morgen,

ich suche nach einem Buch, das die Internas von .NET (Threading, GC, CLR, what ever) erklärt.
Wenn es kein Buch gibt, dann tut's auch irgendetwas online, aber am Ende hab ich doch lieber ein Buch in der Hand.

Mir geht's dabei darum, dass ich einzelne Dinge besser einschätzen kann, wie z.B. die verschiedenen Möglichkeiten, die Arbeit in mehreren Threads untereinander zu synchronisieren. Gerade bei solchen Themen macht man ja schnell Fehler, weil man es gut meint, denkt und dabei im besten Fall mit Kanonen auf Spatzen schießt, aber im schlimmsten Fall grausig zu findende Fehler einbaut.

Kann da jemand etwas empfehlen?
Wäre schön, wenn es nicht ganz so alt ist, am liebsten wäre mir eine moderne Variante bezüglich .NET Core/5, was aber auch noch Parallelen zum "klassischen" .NET zieht.

Deutsch wäre super, aber ist kein Muss.

Ich hab dazu nur dieses recht alte Thema gefunden:https://www.mycsharp.de/wbb2/thread.php?threadid=58040
Die Seminare hab ich schon als PDF runtergeladen, aber vielleicht kennt hier jemand neuere/bessere Lektüre dazu?

Beste Grüße
private Nachricht | Beiträge des Benutzers
glandorf
myCSharp.de - Member

Avatar #avatar-4144.jpg


Dabei seit:
Beiträge: 65
Herkunft: Chemnitz

beantworten | zitieren | melden

Hallo,

C# 8.0 in a Nutshell: The Definitive Reference
978-1492051138

glandorf
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Ehrlich gesagt denke ich nicht, dass Du hier das eine absolute Buch finden wirst, sondern auf verschiedene Bücher setzen musst.

Das Buch The Definitive Reference ist gut geht aber lang nicht so tief in gewisse Themen ein wie zB das Buch von Konrad Kokosa über .NET Speicher Management.
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1432
Herkunft: Düsseldorf

Themenstarter:

beantworten | zitieren | melden

"Pro .NET Memory Management: For Better Code, Performance, and Scalability" von Konrad Kokosa


Ist notiert - danke.
Dann ist das Thema bzw. sind die Themen wohl größer als gedacht - aber davon war auszugehen.

Gibt's denn noch andere Bücher, die Du empfehlen kannst, oder kennst Du eine Übersicht solcher Bücher, die man gelesen haben muss, wenn man sich für sowas interessiert?
Das Buch "C# 8.0 in a Nutshell: The Definitive Reference" klingt mehr wie eine Sprach- und Framework-Referenz und scheint keinen tiefgehenden Einblick zu bieten - also nicht das, was ich suche.

Und wenn es (hier) noch keine Übersicht für sowas gibt, dann kann das doch eine solche Übersicht werden.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Ich bin mir nicht sicher was Du wirklich suchst, denn
Zitat
Mir geht's dabei darum, dass ich einzelne Dinge besser einschätzen kann, wie z.B. die verschiedenen Möglichkeiten, die Arbeit in mehreren Threads untereinander zu synchronisieren.
ist ja ein generelles Thema von Software Architektur und weniger was im Hinblick was unter der Haube bei .NET passiert.

Ich behaupte ich bin durchaus fortgeschritten, was Software Architektur, Pattern und .NET sowie C# betrifft und weiß durchaus solche Konzepte anzuwenden.
Aber bei weiten, um Welten komme ich nicht an das Unter-der-Haube-Wissen von gfoidl ran; der hat da mehr als nur eine Schippe mehr Plan als ich.

Muss aber auch sagen; ich brauche das für meine tägliche Arbeit gar nicht. Anders als gfoidl habe ich nicht soooo sehr mit tiefen .NET Themen zutun oder "muss damit zutun haben".
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7533
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Palladin007,
Zitat
die verschiedenen Möglichkeiten, die Arbeit in mehreren Threads untereinander zu synchronisieren
Auch wenns alt ist, ist es immer noch korrekt und ein "Klassiker": http://www.albahari.com/threading/
An den grundlegenden Dingen wird sich hier auch in Zukunft nichts ändern, da die Konzepte für CPUs und Speichermodelle sich "hier nicht weiterentwickeln". Das wäre ggf. mächtige Brüche mit der Kompatibilität.
http://joeduffyblog.com/ (v.a. die alten Beiträge) sind hier ebenfalls eine gute Quelle, die teils sehr in die Tiefe gehen -- nicht zuletzt wegen Joe Duffys damaligen Job für das entsprechende .NET Team.

mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1432
Herkunft: Düsseldorf

Themenstarter:

beantworten | zitieren | melden

Ich hatte gehofft, ein Buch zu finden, in dem ich Abends (oder wann auch immer) ohne PC darin lesen und so mein Allgemeinwissen etwas spezifischer ausweiten kann.

Das von Abt verlinkte Pro .NET Memory Management ist jetzt auf jeden Fall auf meiner Wunschliste.

Und die (auch hier) verlinkten Blogs hab ich mir auch notiert.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Palladin007,

also ich kann http://www.albahari.com/threading/ auch nur sehr empfehlen. Ich glaube nicht, dass es was besseres als Buch gibt bzw. das ist ja eigentlich ein Buch/PDF.

Wobei ich so konkret an Code bzw. Konstrukten orientierte Themen eh nicht ohne PC lesen kann, da ich das Gelesene immer sofort in konkrete Beispielprogramme umsetzten und ausprobieren muss. Allerdings hilft Testen im klassischen Sinne bei Nebenläufigkeit nur sehr begrenzt. Da muss man dann besser einen bösartigen Scheduler spielen. Und das erfordert - zumindest bei mir - höchste Konzentration. Das kann ich eh nur am Schreibtisch - und da steht dann sowieso der PC. Womit sich der Kreis schließt.

Zum bösen Scheduler habe ich in SyncQueue <T> - Eine praktische Job-Queue einen - wie ich finde sehr lehrreichen - Fall angegeben, wo man den Fehler durch Testen wohl kaum gefunden hätte und in SyncQueue<T> erweitern: Enqueue blockiert bei voller Queue (in: "Das Programmier-Spiel") folgende Erläuterung geschrieben, wie man vorgehen kann/sollte, um solche Fälle aufzudecken:
Zitat
[...] weil der Reiz dieser Aufgabe in meinen Augen in gerade im Knobeln und im Kniffligen liegt. Man muss das Ganze wirklich tief durchdenken. Man muss, wie in dem o.g. Link exemplarisch beschrieben, versuchen, einen möglichst bösartigen Benutzer und zusätzlich einen möglichst fiesen Scheduler zu spielen. Der Benutzer führt die Aufrufe in möglichst böser Reihenfolge in einer vertrackten Umgebung von Threads aus und der Scheduler zerhackt das Ganze noch in möglichst ungünstige Häppchen und wechselt zum jeweils unpassendsten Thread. Und dann muss immer noch alles stimmen.

Den bösen Benutzer kann man natürlich auch in Form von gemeinen Testprogrammen "spielen". Aber den bösen Scheduler kann man bei einem Test, bei dem man das Programm einfach laufen lässt, gar nicht oder nur sehr, sehr schwer simulieren. Das geht weit besser im Kopf. [...]

Wer selbst fiesen Scheduler spielen möchte, kann das - für mehrere andere Synchronisierungsaufgaben - auf der extrem coolen Seite The Deadlock Empire - Slay dragons, master concurrency! tun. Per Knopfdruck kann man dort bestimmen, welcher Thread die jeweils nächste Anweisung ausführen soll und man sieht quasi wie im Debugger sofort, wie sich daraufhin der Programmzustand ändert. Dabei ist es (Spiel-)Ziel, die (jeweils nicht korrekt implementierte) Synchronisierung auszutricksen oder das Programm in einen Ausnahmezustand zu versetzen.

In diesem Zitat "versteckt" sich der Link auf eine weitere Quelle, die ich - neben der Prosa - hier noch beisteuern wollte.

herbivore

PS: Damit man nicht jeden Anwendungscode so intensiv auf Probleme mit der Nebenläufigkeit untersuchen zu müssen, bietet es sich an, im Anwendungscode nicht selbst die Konstrukte (Semaphoren, Kritische Abschnitte, ...) der Nebenläufigkeit zu verwenden, sondern eben solche Klassen wie die SyncQueue, die einem die Details der Synchronisation abnehmen und bei denen man sehr wenig beachten muss (im Grunde genommen nur, dass der einstellende Thread nur bis zum Einstellen auf die gemeinsamen Daten zugreift und der herausholende erst ab/nach dem Herausholen.
private Nachricht | Beiträge des Benutzers