Kann man in c++ nicht auch irgendein klassen-framework basteln, dass paralleles programmieren vereinfacht. bzw. es dann so einfach macht wie das hier: http://concurrency.cc/ ftp://ftp.cs.kent.ac.uk/people/staff/phw/.1011-old/cpa-2011-pdfs/10-jaco bsen.pdf http://christian.lyderjacobsen.org/publications/pdfs/concurrent-event-driven-programming-in-occam-pi-for-the-arduino-slides.pdf
Problem ist eher, dass es 1000 inkompatible Klassen-Framework gibt, die auch noch inkompatibel zur Stl sind. Jedes Framwork für sich alleine währe je einfach zu benutzen. P.S. Die C++ Programmieren konnen sich ja nicht mal auf Groß/Kleinschreibung der Substantive einigen. Wie wollt ihr euch auf ein einfach zu benutzendes Framework einigen?
> Kann man in c++ nicht auch irgendein klassen-framework basteln, dass > paralleles programmieren vereinfacht. Ja, geht. Fang an ;-)
Messheini schrieb: > Kann man in c++ nicht auch irgendein klassen-framework basteln, Das System (mehr als ein Framework) heißt OpenMP und gibt es für C, C++ und Fortran. Es ist allerdings, sagen wir mal, zur Lösung echter Probleme gedacht, nicht für irgendein Arduino-Kindergarten rumgemache. > paralleles programmieren vereinfacht. bzw. es dann so einfach macht wie > das hier: Ach je. Also das übliche "Wasch mich, aber mach mich nicht nass.".
Hannes Jaeger schrieb: > Das System (mehr als ein Framework) heißt OpenMP und gibt es für C, C++ > und Fortran. OpenMP ist eine ausgeklügelte Sache; es ist in erster Linie dazu da, seriell geschriebene Programme zu "parallelifizieren", fast ohne am Code etwas zu ändern. Gewinnbringender ist es aber wahrscheinlich, gleich vom Algorithmus her einen parallelen Ansatz zu wählen. Für C/C++ kommen dazu außerdem in Frage: pthread und MPI. https://de.wikipedia.org/wiki/Native_POSIX_Thread_Library https://de.wikipedia.org/wiki/Message_Passing_Interface
pthreads kann man bereits für alle alten C++-Versionen nehmen. Außerdem lohnt sich da wie immer ein Blick zu boost. Wenn man sich auf C++ 11 einlässt, geht es auch schon im Standard: http://en.wikipedia.org/wiki/C%2B%2B11#Threading_facilities
Man muss sich halt auf das einlassen, was die verwendeten Frameworks benutzen. War schon nerfig genug, QMutexLocker und pthread_mutex unter einen Hut zu bringen. Dazu dann noch die selbstgebastelten Lösungen der Libraries. Jetzt kommt auch noch std::mutex dazu. Es gibt einfach zu viel.
Wie von Herrn Wachtler schon angesprochen, bringt der aktuelle Sprachstandard C++11 eine brauchbare Unterstützung für die klassische Parallelprogrammierung mit: http://de.cppreference.com/w/cpp/thread http://baptiste-wicht.com/posts/2012/03/cpp11-concurrency-part1-start-threads.html http://en.cppreference.com/w/cpp/thread/lock_guard http://de.cppreference.com/w/cpp/thread/condition_variable Aber auch Futures/Promises und sonstige Unterstützungen für "mach mal eben nebenbei" ist enthalten: http://de.cppreference.com/w/cpp/thread/future https://solarianprogrammer.com/2012/10/17/cpp-11-async-tutorial/ Wenn man sich eher für das ebenfalls schon angesprochene OpenMP interessiert, dann kann ich das folgende Buch nur wärmstens empfehlen: http://www.amazon.de/OpenMP-Informatik-Fokus-Simon-Hoffmann/dp/3540731229/ref=sr_1_1?s=books&ie=UTF8&qid=1423128532&sr=1-1&keywords=OpenMP Aber auch der Netzauftritt von OpenMP bietet schon gute Einstiegshilfen: http://openmp.org/wp/resources/ Ansonsten gibt es da auch ganz neu OpenACC, welches die Parallelprogrammierung für GPU's und Mehrkern-CPU's unter einem Hut bringen will: http://www.openacc-standard.org/
"The nice thing about standards is that you have so many to choose from; furthermore, if you do not like any of them, you can just wait for next year's model." -- Andrew S. Tanenbaum 1981
Leider trifft das vor allem auf AMD zu. Die können vor lauter Ankündigungen nicht entscheiden, welche Sache sie für ihre an sich tolle Hardware endlich auch einmal richtig umsetzen wollen....
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.