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

@ -30,7 +30,7 @@ func main() {
// `&` syntax. // `&` syntax.
atomic.AddUint64(&ops, 1) atomic.AddUint64(&ops, 1)
// Allow other goroutines to proceed. // Allow other goroutines to proceed.
runtime.Gosched() 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> <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;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;sync/atomic&quot;</span>
<span class="kn">import</span> <span class="s">&quot;runtime&quot;</span>
</pre></div> </pre></div>
</td> </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> <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">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="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> </pre></div>
</td> </td>
@ -113,6 +113,18 @@ address of our <code>ops</code> counter with the
</td> </td>
<td class="code leading"> <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> <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> <span class="p">}()</span>
<span class="p">}</span> <span class="p">}</span>