Threadsichere Datenstruktoren, Synchronisationsmöglichkeiten und Co
-
Hallöle,
Ich würde mich gerne mich gerne etwas mit Thread-sicheren Datenstrukturen und Synchronisationsmöglichkeiten auseinandersetzen. Die Dinge, die ich bisher kenne (Condition Variables, Mutexes, Atomics, Barriers) sind irgendwie ziemlich Low-Level. Gibt es da irgendwo in der Welt des Internets eine Seite, die ihr empfehlen könnt?
Grüße,
PIP.S.: Grundsätzlich würde ich mir ja auch ein Buch bestellen, aber ich habe jetzt Wochenende, und nicht wenn dieses ankommt.

-
Ich empfehle, einfach entsprechende Programme zu schreiben und die dabei anzutreffenden Probleme zu lösen

-
Ich kann natürlich jedes mal, wenn ich Container an Objekten teilen will, Mutexe verwenden, aber schöner und schneller wird der Code dadurch nicht. Das gilt glaube ich allgemein für die genannten Dinge.
-
Die Frage ist: Was willst du konkret dagegen unternehmen? Und das kann man eben auch nur für ein konkretes Problem beantworten...
Meine allgemeine Antwort wär: Shared Datenstrukturen möglichst vermieden.
Ansonsten wäre Lock-free wohl auch mal ein Stichwort für dich. Mehr High-level wirds da aber nicht, im Gegenteil. Im Vergleich zu Lock-free Algorithmen wirken Mutexe wohl wie der Himmel...
-
Das mag schon sein, jedoch gibt es doch bestimmt ein paar Lösungsansätze, die man öfters mal brauchen kann, oder?
-
Wenn du mehr High-level willst dann schau vielleicht mal in Richtung futures/promises.
Ansonsten gib uns ein Problem das du lösen willst und dann können wir uns überlegen wie genau du das angehen könntest...
-
Kannst mal damit rumspielen:
http://msdn.microsoft.com/en-us/library/dd492627.aspx
-
Bin unter OS X

-
314159265358979 schrieb:
Bin unter OS X

Wenn es OS X spezifisch sein darf, kannst du dir Grand Central Dispatch und vielleicht auch Blocks (eine Apple eigene Lambda Implementierung) in der Apple Doku ansehen,
Ansonsten sind die Artikel von Herb Sutter (http://www.gotw.ca/publications/index.htm bzw Dr Dobbs ) lesenswert. Die C++11 Dinge sind aber mit Clang wohl erst mal nicht zu machen ...
-
314159265358979 schrieb:
Gibt es da irgendwo in der Welt des Internets eine Seite, die ihr empfehlen könnt?
Ich kann dir Buecher empfehlen:
Java concurrency in practice | ISBN: 0321349601
Auch wenn es Java ist. Ich fands gut.The Art of Concurrency | ISBN: 9780596521530
Geht eher abstrakt an das Thema heran. Recht nett um parallele Algorithmen zu schreiben.Windows Multithreading mit C++ und C# | ISBN: 3826609891
Auch wenn es Windows ist, beschreibt es alles essentielle das man wissen muss.
-
314159265358979 schrieb:
Das mag schon sein, jedoch gibt es doch bestimmt ein paar Lösungsansätze, die man öfters mal brauchen kann, oder?
Klar.
Einige davon wirst du vermutlich schon kennen, auch neben denen die du erwähnt hast.
z.B. Worker-Queues die von einem Thread oder Thread-Pool abgearbeitet werden.Und natürlich existiert neben den ganzen "klassischen" Sachen mit Mutexen die ganze Welt der "lockfree" Datenstrukturen/Algorithmen.
Womit sich allerdings nicht sehr viele Leute beschäftigen, weil es da schnell anfängt sehr ... sagen wir mal unüberschaubar bis kaum-mehr-einschätzbar zu werden.