C++11 Attribute
-
Hallöle,
Nachdem ich diesen Artikel gelesen habe, frage ich mich, wozu die Dinger eigentlich gut sein sollen. Der User "Mike" bringts in seinem Kommentar eigentlich ziemlich gut auf den Punkt.
Grüße,
PI
-
Meinst du den Kommentar? http://herbsutter.com/2012/04/05/reader-qa-what-does-it-mean-for-attributes-to-affect-language-semantics/#comment-5115
I thought [[attributes]] was an attempt to normalize these extensions as a syntactic construct so we stop denying the reality that is vendor-specific extensions.
Naja, der Artikel beschreibt ja nur die Ansicht von Herb Sutter und nicht die offizielle Ansicht. Ich sehe das genau wie Mike.
-
Sutter sagt doch, dass Attribute die Semantik eines Programms nicht verändern sollen.
-
314159265358979 schrieb:
Sutter sagt doch, dass Attribute die Semantik eines Programms nicht verändern sollen.
Ja, aber das ist nur seine Ansicht. In Stroustrups C++11-FAQ ist ja sogar ein Beispiel, wie man OpenMP damit benutzen könnte. http://www2.research.att.com/~bs/C++0xFAQ.html#attributes
-
Also hat Sutter einfach nur ein Rad ab. Gut zu wissen.

-
http://www.codesynthesis.com/~boris/blog/2012/04/18/cxx11-generalized-attributes/
Keine Custom Attribute, Finger weg

-
Eine Schleife zu parallelisieren ändert die Semantik eines Programms nicht.
-
SeppJ schrieb:
Eine Schleife zu parallelisieren ändert die Semantik eines Programms nicht.
Ich würde sagen, nachdem Threads in der Sprache sind, doch.
-
SeppJ schrieb:
Eine Schleife zu parallelisieren ändert die Semantik eines Programms nicht.
Doch, wohl. Vor allem, wenn eine Variable geshared wird und nicht atomic ist, oder durch andere Mechanismen geschützt wird.
-
cooky451 schrieb:
SeppJ schrieb:
Eine Schleife zu parallelisieren ändert die Semantik eines Programms nicht.
Ich würde sagen, nachdem Threads in der Sprache sind, doch.
Huch hab ich etwas verpasst, dachte sie seien in die Stdlib gekommen?
-
314159265358979 schrieb:
SeppJ schrieb:
Eine Schleife zu parallelisieren ändert die Semantik eines Programms nicht.
Doch, wohl. Vor allem, wenn eine Variable geshared wird und nicht atomic ist, oder durch andere Mechanismen geschützt wird.
Damit würde sich das Verhalten von nichtdeterministisch ohne parallelisierte Schleife auf nichtdeterministisch mit parallelisierter Schleife ändern. Beides nicht so prickelnd...
-
Was ist an der nicht parallelisierten schleife nicht deterministisch

-
314159265358979 schrieb:
Was ist an der nicht parallelisierten schleife nicht deterministisch

Dass sie auf eine nichtatomische, shared variable zugreift. Sowas ist immer nichtdeterministisch, sobald Threads im Spiel sind, dazu braucht man nicht extra OpenMP-Parallelisierung.
Wenn sich deine Argumentation darauf bezog, dass durch die Parallelisierung ja grundsätzlich zusätzliche Threads reinkommen und damit die Semantik gegenüber einem rein sequentiellen Programm geändert wird, hast du grundsätzlich natürlich recht, allerdings bezweifle ich mal ganz stark, dass Sepp den Unterschied in seine Aussage mit einbeziehen wollte. Lies es meinetwegen als "Eine Schleife ordentlich zu parallelisieren ändert die Semantik eines Programms nicht."
-
Gehen wir davon aus, dass es keine Synchronisationsprobleme gibt, so würde die folgende Schleife parallelisiert dennoch eine andere Ausgabe erzeugen, als sequenziell:
for(int i = 0; i < 10; ++i) std::cout << i;
-
314159265358979 schrieb:
Gehen wir davon aus, dass es keine Synchronisationsprobleme gibt, so würde die folgende Schleife parallelisiert dennoch eine andere Ausgabe erzeugen, als sequenziell:
for(int i = 0; i < 10; ++i) std::cout << i;Genaus das ist ein Synchronisationsproblem, wie alles, was Nebenwirkungen hat, deren zeitliche Abfolge relevant/sichtbar ist
