|
|
@@ -47,15 +47,15 @@
|
|
47
|
47
|
7.
|
|
48
|
48
|
|
|
49
|
49
|
1. helgrind meldet einen Data-Race-Fehler in der Variable `done`:
|
|
50
|
|
- ```text
|
|
51
|
|
- ==1064== Possible data race during read of size 4 at 0x602084 by thread #1
|
|
52
|
|
- ==1064== Locks held: none
|
|
53
|
|
- ==1064== at 0x400CEB: main (main-signal.c:16)
|
|
54
|
|
- ==1064==
|
|
55
|
|
- ==1064== This conflicts with a previous write of size 4 by thread #2
|
|
56
|
|
- ==1064== Locks held: none
|
|
57
|
|
- ```
|
|
58
|
|
- Dieser Fehler wird gemeldet, da der Kindthread in `done` eine 1 schreibt, sobald er fertig ist, im Elternthread jedoch eine while-Schleife mit dieser Variable läuft.
|
|
|
50
|
+ ```text
|
|
|
51
|
+ ==1064== Possible data race during read of size 4 at 0x602084 by thread #1
|
|
|
52
|
+ ==1064== Locks held: none
|
|
|
53
|
+ ==1064== at 0x400CEB: main (main-signal.c:16)
|
|
|
54
|
+ ==1064==
|
|
|
55
|
+ ==1064== This conflicts with a previous write of size 4 by thread #2
|
|
|
56
|
+ ==1064== Locks held: none
|
|
|
57
|
+ ```
|
|
|
58
|
+ Dieser Fehler wird gemeldet, da der Kindthread in `done` eine 1 schreibt, sobald er fertig ist, im Elternthread jedoch eine while-Schleife mit dieser Variable läuft.
|
|
59
|
59
|
|
|
60
|
60
|
2. Trotz der Meldung von helgrind ist der Code korrekt, da im Elternthread die Variable `done` nie geschrieben wird, sondern nur gelesen wird. "Verpasst" die while-Schleife die Änderung in `done`, so spielt das keine Rolle und die Schleife läuft einfach noch ein letztes Mal durch.
|
|
61
|
61
|
|