Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Hallo. Ich würde mich kurzfristig gerne mit den grundlegenden Dingen zu Multithreading beschäftigen (für ein Projekt) und, da hier ja einige Cracks was Software-Entwicklung anbetrifft unterwegs sind, fragen welche Bücher ihr zum Thema empfehlen könntet. Ich habe hier im Forum was von "Concurrency in Practice" gelesen, was aber wohl eher speziell für Java Entwickler gedacht ist. Falls es da so etwas in der Art für C++ Entwickler gibt: Klasse - ganz allgemein würde mir aber auch reichen. Vor allem würde mich interessieren was es so für Synchronisationsprimitive und Design Patterns gibt.
Die prinzipielle Denkweise bei Concurrency ist zwischen Java und C++ erstmal nicht so verschieden. Und Concurrency in Practice ist ein wirklich exzellentes Buch zu der Thematik. Ich denke also, das wäre auf jeden Fall ne sinnvolle Investition
Für C++ kenn ich nur das sehr gut Standardwerk "Effective C++" von Scott Meyers. Weiß aber nicht, wie sehr da Concurrency drin abgehandelt wird. Wenn du mehr in die Tiefe gehen möchtest, kommst du imho um Concurrency in practice nicht herum.
Ich hätt außerdem nen Personen-Tip Angelika Langer ist extrem fit in Concurrency und ne Berühmtheit auf dem Gebiet. Die gute lief mir auch schon auf diversen Konferenzen vor der Nase herum Die hat auf ihrer Seite auch ne Menge Buchtips zu dem Thema (auch für C++). Da wirst du bestimmt fündig.
Grüße, ~ Frase
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Falls du daran interessiert bist wie das ganze auf Betriebssystem-Ebene aussieht kann ich dir "Modern Operating Systems" von A.S. Tanenbaum empfehlen. Allerdings dreht sich nur ein kleiner Teil des Buches um Multithreading und das Buch ist auch recht teuer. Ich hab damals für die englische Ausgabe 80 Euro bezahlt. Ist also vielleicht besser, wenn du es dir in der Bibliothek ausleihst oder so. Aber wie gesagt, ist ein tolles Buch, auch wenn ich nur die ersten 6 Kapitel (=460 Seiten) gelesen habe, der Rest war nicht Prüfungsrelevant
Für dich interessant dürften die Kapitel 2 und 6 sein.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Das Thema besteht aus einigen Unterthemen, welche als eigenes schon recht umfangreich sind. Lesen und schreiben von Variablen, Micro- und Makro-Parallelisierung, hardware threading, software threading, Signals, Events und da sind bestimmt noch 1-2 weitere. Bei dem zugriff auf Variablen gibt es z.B. Atomic Operations, Mutex, Critical Sections und Semaphoren, wobei erstens ich bisher nur in den Game Gems Büchern gesehen hab und in Whitepapers. Die anderen 3 sind je nach Betriebssystem verfügbar und unterscheiden sich nur im Detail, was eine einfache Cross Platform nutzung kompliziert macht. Parallelisierung gibt es 2 Arten, einmal Micro wie z.B. schleifen über OpenMP oder Macro wie z.B. ThreadPools, die verschiedene Methoden ausführen. Je nach CPU Hersteller sind die Hardware Threads unterschiedlich in der Anzahl und Features, wärend Software Threads vom OS unterschiedlich implementiert werden und entsprechend große Unterschiede in der Performance mit sich bringen(Linux Threads sind deutlich schneller und kleiner im Memory Footprint als Windows Threads). Signals und Events sind auch noch eine recht wichtige Komponenten, welche z.B. in pthread per condition gelöst wurde und der Linux kernel stellt noch signal pipes zur verfügung, wärend Windows Events(durch Conditions abgelöst, da sie Fehlerhaft sind), Condition(seit win2008 Server und Win Vista) und Message System zur verfügung stellt.
Also da sind viele Themen und die deckt ein Buch alleine nicht ab, daher bin eher ein Fan von Google und Whitepapers, sowie Doku von Software. Noch dazu ist seit einigen Monaten die API für Threads im C++ Standard fertig gestellt worden und wird nun von allen aktiven C++ Compiler Entwicklern implementiert, da der neue ISO kommendes Jahr aktiv werden soll und dann auch Atomic Operations fester bestandteil von C++ sind(was Multithreading stark vereinfacht). Aktuell gibt es in Windows z.B. ein umfangreichen Funktionssatz(http://msdn.microsoft.com/en-us/library ... 85%29.aspx siehe "Interlocked function") dafür, welcher dann nicht mehr länger benötigt würde.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.