Highlight 92

This commit is contained in:
Teiva Harsanyi 2024-03-05 21:19:34 +01:00
parent 31a3555c87
commit 26fd68e02c
3 changed files with 3 additions and 3 deletions

View file

@ -96,7 +96,7 @@ So how do we solve false sharing? There are two main solutions.
The first solution is to use the same approach weve shown but ensure that `sumA` and `sumB` arent part of the same cache line. For example, we can update the `Result` struct to add _padding_ between the fields. Padding is a technique to allocate extra memory. Because an `int64` requires an 8-byte allocation and a cache line 64 bytes long, we need 64 8 = 56 bytes of padding:
```go
```go hl_lines="3"
type Result struct {
sumA int64
_ [56]byte // Padding

View file

@ -924,8 +924,8 @@
<p>The first solution is to use the same approach weve shown but ensure that <code>sumA</code> and <code>sumB</code> arent part of the same cache line. For example, we can update the <code>Result</code> struct to add <em>padding</em> between the fields. Padding is a technique to allocate extra memory. Because an <code>int64</code> requires an 8-byte allocation and a cache line 64 bytes long, we need 64 8 = 56 bytes of padding:</p>
<div class="language-go highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="kd">type</span><span class="w"> </span><span class="nx">Result</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nx">sumA</span><span class="w"> </span><span class="kt">int64</span>
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="p">[</span><span class="mi">56</span><span class="p">]</span><span class="kt">byte</span><span class="w"> </span><span class="c1">// Padding</span>
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="nx">sumB</span><span class="w"> </span><span class="kt">int64</span>
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="hll"><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="p">[</span><span class="mi">56</span><span class="p">]</span><span class="kt">byte</span><span class="w"> </span><span class="c1">// Padding</span>
</span></span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="nx">sumB</span><span class="w"> </span><span class="kt">int64</span>
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="p">}</span>
</span></code></pre></div>
<p>The next figure shows a possible memory allocation. Using padding, <code>sumA</code> and <code>sumB</code> will always be part of different memory blocks and hence different cache lines.</p>

Binary file not shown.