diff --git a/FrOSCon26/FrOSCon.26.mm b/FrOSCon26/FrOSCon.26.mm index 4a0d10f..5d80667 100644 --- a/FrOSCon26/FrOSCon.26.mm +++ b/FrOSCon26/FrOSCon.26.mm @@ -240,9 +240,7 @@ - - - + @@ -323,7 +321,29 @@ - + + + + + + + + + + + +

+ allein der Umstand daß Cores direkt an einem Cache hängen, genügt, um die Notwendigkeit der Synchronisation aufzuzeigen ... daher ist das Schlüsselwort auch "cache-coherence" +

+ + +
+ + + +
+
+
@@ -428,6 +448,9 @@
+ + + @@ -680,9 +703,65 @@ - + + + + + + + + +

+ Producer: +

+

+ +

+

+ write payload[...]        // ordinary stores +

+

+                            // StoreStore + LoadStore barrier here +

+

+ store(flag, READY, release) +

+

+ +

+

+ +

+

+ Consumer: +

+

+ +

+

+ v = load(flag, acquire) +

+

+                            // LoadLoad + LoadStore barrier here +

+

+ if (v == READY) +

+

+     read payload[...]     // ordinary loads +

+

+ else +

+

+     // walk away — no information gained, positive or negative +

+ + +
+
@@ -795,7 +874,7 @@ - + @@ -810,7 +889,7 @@ - + @@ -825,6 +904,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ Ringbuffer:
+

+

+ buffer[cursor % RING_SIZE] +

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -922,6 +1119,14 @@ + + + + + + + +