This commit is contained in:
Mark McGranaghan 2013-06-20 08:11:53 -07:00
parent 05b6731f1f
commit bc0c8b5918
2 changed files with 15 additions and 3 deletions

View File

@ -23,14 +23,14 @@ func main() {
// once a millisecond.
for i := 0; i < 50; i++ {
go func() {
for {
for {
// To atomically increment the counter we
// use `AddUint64`, giving it the memory
// address of our `ops` counter with the
// `&` syntax.
atomic.AddUint64(&ops, 1)
// Allow other goroutines to proceed.
// Allow other goroutines to proceed.
runtime.Gosched()
}
}()

View File

@ -57,6 +57,7 @@ counters</em> accessed by multiple goroutines.</p>
<div class="highlight"><pre><span class="kn">import</span> <span class="s">&quot;fmt&quot;</span>
<span class="kn">import</span> <span class="s">&quot;time&quot;</span>
<span class="kn">import</span> <span class="s">&quot;sync/atomic&quot;</span>
<span class="kn">import</span> <span class="s">&quot;runtime&quot;</span>
</pre></div>
</td>
@ -97,7 +98,6 @@ once a millisecond.</p>
<div class="highlight"><pre> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="mi">50</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
<span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">{</span>
<span class="nx">time</span><span class="p">.</span><span class="nx">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span>
</pre></div>
</td>
@ -113,6 +113,18 @@ address of our <code>ops</code> counter with the
</td>
<td class="code leading">
<div class="highlight"><pre> <span class="nx">atomic</span><span class="p">.</span><span class="nx">AddUint64</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">ops</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</pre></div>
</td>
</tr>
<tr>
<td class="docs">
<p>Allow other goroutines to proceed.</p>
</td>
<td class="code leading">
<div class="highlight"><pre> <span class="nx">runtime</span><span class="p">.</span><span class="nx">Gosched</span><span class="p">()</span>
<span class="p">}</span>
<span class="p">}()</span>
<span class="p">}</span>